Neuro-symbolic AI 에 대해서 (2) neural network + symbolic AI
앞의 neuro-symbolic AI (1) 글을 통해 connectionsim 과 symbolism 을 이해했다면, 이 둘 neural network + symbolic AI 를 합친 "neuro-symbolic AI" 에 대해 자세히 알아보자.
Neuro-symbolic AI 란?
위의 질문은 사진을 보고 특징을 파악한 후 질문을 이해해서 문제를 해결해야 한다. 이러한 연구들을 MIT, IBM 연구실에서 많이 하고 있다.
위의 질문처럼 사진이 주어지면 사진을 보고 (visual perception), 질문에 맞게 (question understanding), 3이라고 답해야 하는데(logic reasoning) 이렇게 답을 하기 위해서는 일반적인 딥러닝 CNN, RNN 만으로는 어렵다. 이 경우에 symbolic AI 를 섞어서 논리적으로 추론하여 답을 풀어낼 수 있다.
Visual Perception 의 경우에는 neural network의 CNN이 잘하는부분이고, question understanding 은 NLP의 LSTM, RNN이 잘하는부분이다. 그리고 답을 추론해야 하는 logic reasoning 은 symbolic AI 가 잘하는 부분이다.
David Cox 는 이처럼 neural network 와 symbolic AI 서로 대립하지 말고, neural network 은 neural network 대로, symbolic 은 symbolic 대로 두고 collaborate 하자고 주장한다.
위의 문제를 해결하는 전반적인 과정은 아래와 같다.
Mask r-cnn 을 통해 input image 를 segmentation 하고 CNN 을 거쳐 여기서 이 물체들이 어떤 것을 대표하는지 특성을 잡아내고 이 것을 구조화해서 ‘structural scene representation’ 을 만든다. (c)의 structural scene representation 을 보면 input image 의 박스 5개에 대한 특성들 (size, shape, material, color, 위치) 을 뽑아내 구조화한 것을 볼 수 있다.
그 이후 question parsing 단계로 넘어가서 LSTM 을 이용해 질문을 구문해석해서 뽑아내고, 이 것을 domain specific language 로 바꿔준다. 즉 LSTM 거친 결과들을 filter_shape 등과 같이 도메인에 최적화된 프로그래밍 언어로 바꾸어주는 것이다. (e) 의 Program 을 보면 scene 에서 cylinder 를 필터링하고 뒤에 있는 것들에 대한 관계를 보는 등 이런 결과들을 Program 에 집어넣으면 (c) 의 구조화된 데이터와 (e) 의 프로그램이 같이 실행되어 처리가 되고 답이 나올 수 있게 된다.
위의 과정들을 카테고리로 나누어보면 아래와 같이 나눌 수 있다.
- 맨 첫번째 과정은 vision 을 처리해 압축화된 feature 를 뽑아내는 과정이니 ‘Vision(CNN)’ 이라고 할 수 있다.
- CNN 에서 나온 feature 를 구조화해서 나타내기 때문에 ‘structured representation’ 이라고 할 수 있다.
- 주어진 질문을 잘 처리해서 프로그램으로 바꿔주는 과정은 언어를 처리하는 과정이니 ‘Language(RNN)’ 이라고 할 수 있다.
- 이렇게 해서 만든 프로그램을 symbolic AI(symbolic programming) 을 이용해서 답을 낼 수 있으니 ‘Symbolic Program’ 이라고 할 수 있다.
이 네 가지 단계가 겹쳐져서 neuro-symbolic AI 를 구성하고 왼쪽의CNN, RNN 이Neural network 파트, 오른쪽의 structured representation, symbolic program 이 Symbolic AI 파트이다. 이 네 가지가 결합하면 복잡한 문제도 잘 풀 수 있다.
정리하자면, vision 을 거치고 symbolic representation 을 거쳐 feature 이 준비되면, 질문에 대해 RNN 을 거치는데 이 때 이후 바로 answer 이 나오는 것이 아니라 ‘symbolic program’ 을 거친다는 점이 중요하다. 여기서 symbolic program 은 structured representation 위에서 operate 한다.
이 전 과정이 jointly trained with the reinforcement learning, 즉 강화학습으로 같이 트레이닝되고, 공동으로 트레이닝되어도 각각의 CNN, RNN 이 추구하는 것은 다 다르다.
- RNN 은 learn to better parse language into the program
- CNN 은 learn to better extract symbols into the structured representation
- 이런 전 과정이 jointly together trained 이기 때문에 이 시스템은 아예 ‘genuine new hybrid’ (새로운 혼합) 시스템이라고 할 수 있다.
이 사진에서도 사진 input 을 받으면 vision 처리하고, structured representation 거친 후 질문에 대한 semantic parsing 을 거쳐 program 에 넣고, 이 프로그램과 structured representation 으로부터 symbolic reasoning 이 가능해진다. 이런식으로 접근한다면 딥러닝만으로는 잘 못 푸는 문제도 reasoning 을 통해 잘 풀 수 있을 것이라고 기대한다.
그렇다면, 이런식으로 neural network 와 symbolic reasoning 을 합한 neuro-symbolic AI 의 장점은 무엇일까?
먼저 높은 정확도를 가진다.
물론 간단한 문제들은 CNN 하나로도 높은 정확도를 가질 수 있겠지만, 지금까지의 예시들처럼 복합적인 문제를 풀 때도 neuro-symbolic AI 는 높은 정확도를 보인다.
두번째로 데이터 효율이 좋다.
Input image를 가지고 structured data 로 만들기 때문에, 작은 양의 data 를 가지고도 분류하고 처리할 수 있게 된다.
세번째로 과정을 투명하게 볼 수 있고 해석가능성도 좋다.
이 세번째 장점이 가장 중요한데, 사람들은 항상 AI 가 추론한 결과를 보고 왜 그러한 결정을 내렸는지 궁금해하지만 알 수 없다. 이 symbolic AI 의 경우에는 tends to show their work. They work in terms of concept(symbol).
This system translated from natural language to “program”, we can step through the program.
즉, 이 시스템이 concept 을 symbol 로 받아들이고 NLP 를 거친 후 “Program” 으로 넣기 때문에 프로그램 안을 들여다보면 그 과정들을 볼 수 있으며 추적 가능하고, reasoning 을 하는 과정까지 볼 수 있으므로 투명하고 해석이 쉽다.
* 현재까지의 symbolic AI roadmap
- 처음 Neurosymbolic VQA 의 경우에는 properties all predefined.
- 그 다음, Neurosymbolic Concept Learner 의 경우에는 새로운 values 를 배울 수 있다. Color 를 예로 들자면 우리는 새로운 color 를 autonomously learn 할 수 있는데, red 를 predefined 해줄 필요 없이 context 를 통해 배울 수 있다.
- 그 이후 갈수록 더 sophisticated 해지고 combining more neural network 해지면서 less predefined, more autonomous 해지고 있는 추세이다.
여기까지 AAAI-20 Invited Talk : David Cox 의 neuro-symbolic AI 강연을 듣고 공부해본 내용이었다. 추가적으로 관련 논문들을 읽어 업로드할 예정이다.
(출처 : 해당 글의 이미지들과 ppt 자료들은 AI 학회 speech : AAAI-20 Invited Talk : David Cox 의 발표자료와 <Information and Intelligence> 유튜브 채널의 <오늘의 연구와 뉴스 : Neuro-Symbolic AI> 의 영상자료에서 가져왔다.)