강화학습을 해보자~!(1)
여러분은 인공지능을 얼마나 아시고 계시는가? 인공지능은 일반 가정(빅스비, siri, 등) 이렇게 가까운 것부터 멀리로는 알파고까지 다양하게 우리 생활부터 우리 미래까지 책임지고 있는 현재 인공지능은 AI개발자나 연구원이 되고 싶은 나에게 최적의 환경인 것 같다. 그렇기에 누구보다 뒤늦기 싫고 누구보다 빠르게 남들보다 멀리 나가고 싶기에 팡요 랩의 강화 학습 영상을 보고 따라 해 볼 예정이고 당연히 블로그를 만들었으니 이 한 번으로 끝나지 않고 제대로 한 번 논문을 읽으면서 해볼 것이다.
먼저 인공지능의 기준은 무엇일까? 인공지능은 영어로 Artifcial Intelligence로 간단히 말하면 인위적인 지능 즉 사람이 만들어 놓은 지능이다. 그렇다면 지능이란 무엇인가? 지능은 도전적인 새로운 과제를 성취하기 위해 사전 지식과 경험을 적용할 수 있는 능력인데, 많은 연구자들이 제시한 지능의 정의는 아래와 같은 공통점을 지닌다 라고 위키백과사전에서 말한다 그밖에 지능을 이런 식으로 6가지의 특징이 있다
- 지능은 적응적(Adaptive)이다. 지능은 다양한 상황과 문제에 융통성을 갖고 반응하는 데 사용된다.
- 지능은 학습능력(Learning Ability)과 관련이 있다. 특별한 영역이 지적인 자는 그렇지 아니한 자보다 더 신속하게 새로운 정보를 처리할 수 있다.
- 지능은 새로운 상황을 효과적으로 분석하고 이해하기 위해 선행지식(Use of Prior Knowledge)을 활용하는 것이다.
- 지능은 여러가지 다른 정신 과정들의 복잡한 상호작용과 조정을 포괄한다.
- 지능은 문화특수적(Cultural Specific)이다. 한 문화에서 지적인 행동이 반드시 다른 문화에서 지적인 행동으로 간주될 필연성을 갖지 아니한다. 즉, 지능은 보편적이지 아니하다.
- 지성은 감정과는 독립하여 사고하는 기능이다.
이 6가지 조건이 충족한다면 지능이라고 불릴 수 있는 것이다 즉 인공지능은 사람이 직접 어떠한 알고리즘이나 수학적 지식으로 스스로 생각하고 더 확장해 나간다면 반복적인 일을 자동화를 해줄 수 있게 한다. 인공지능을 배우는데 이상한 소리를 하는 것처럼 들릴 수 있지만 인공지능은 기본적인 이론을 알지 못하면 수학적 공식이나 알고리즘 때문에 아픈 머리와 높은 진입장벽이 더 높아질 수 있기에 이런 기본적인 것 하나하나가 중요하다.
이제 인공지능 안에 있는 것 하나하나 조사해 볼 것이다. 인공지능은 일단 너무 큰 폭에 개념이라고 생각한다 단어를 가, 나, 다, 라 순으로 정렬하는 것도 어찌 보면 지능이라고 말할 수 있고 우리 집에 있는 빅스비도 인공지능이라고 불릴 수 있으니 인공지능이라는 개념은 말했다시피 너무 큰 개념이다 이제 이 개념을 조금씩 쪼개 보려고 한다. 사실 우리가 상상하는 인공지능의 모습들은 컴퓨터가 처음 나왔을 때부터 상상하고 있었던 것들이다. 물론 아직도 우리는 터미네이터 같은 감정을 가지고 판단하는 인공지능은 만들기 어렵지만 감정이 없고 인간이 하기 싫은 간단한 노동이나 그런 일들은 100% 인공지능 대체를 할 수 있는 현실은 머지않았다고 몇몇 전문가들은 말하고 있다.
다시 주제로 넘어와서 앞에서 말했다시피 인공지능의 개념은 1950년대 매니악 컴퓨터가 중, 고등학교 교실 2~3개를 합친 방에서 돌아갈 때부터 많은 사람들이 상상하고 있었다. 그리고 현재처럼 컴퓨터 자원은 아직 빈약해 아직 말하지는 않았지만 CNN처럼 반복 학습하기에는 무리가 있어서 결국 선택한 방법이 귀납적 기계학습이다. 귀납적 기계학습이란 정의를 내리는 것보다는 예시 하나로 설명해 주겠다 "원숭이는 바나나를 좋아한다", "바나나는 노랗고 반달 모양이다"라고 코드를 적은 후 바나나를 이 코드로 찾는 거라고 생각하면 이해하기 편할 것이다.
예전 많은 사람들은 이렇게 귀납적 방식만이 길이다라고 생각 했을지 모르지만 현재는 반복적인 학습도 발전하게 되었다 반복적인 학습이란 전에는 컴퓨터 자원이 너무 한정적이라서 못했지만 컴퓨터 자원이 많이 발전한 지금 귀납적 기계학습을 계속 층층이 쌓고 계속 학습을 시키는 것을 반복적인 학습 즉 딥러닝이라고 생각하면 편할 것 같다 반복적인 학습에는 많은 분들이 아는 CNN( 컨볼루션 뉴럴 네트워크 -> CNN. convolutional neural network )라고 생각하면 편할 것 같다.
이제 설명을 마무리하고 이제 나의 목표 강화학습을 할 것이다 강화 학습은 간단히 말하자면 알파고이다 알파고처럼 현재와 미래의 바둑 수를 4~8 턴을 예측하는 것이 아니라 여러 시뮬레이션을 돌려 이 바둑이라는 게임이 끝날 때까지의 수를 계산하여 내가 지금 어디에 내 바둑알을 배치해야 하는지 아는 것이라고 알면 될 것 같다.