"대표적인 인공지능 사례 살펴보기"의 두 판 사이의 차이
red
(사용자 2명의 중간 판 11개는 보이지 않습니다) | |||
244번째 줄: | 244번째 줄: | ||
− | 왓슨은 답변 | + | 왓슨은 답변 후보 목록을 만들기 위해 이와 비슷한 접근 방식을 사용했다. 왓슨의 목적은 정답을 선별하는 것이 아니라 정답으로 고려할 만한 답변 후보를 수집하는 것이다. 채용보다 약간 까다로운 면이 있는데, 적임자가 한 명 이상 존재하는 인재 채용과 달리 <제퍼디!> 문제의 단서에는 정답이 단 하나만 존재 한다는 것이다. 후보 생성 단계가 끝났을 때 왓슨의 후보 목록에 정답이 들어 있지 않다면 왓슨은 답을 맞힐 기회 자체가 없어지는 것이다. 그러므로 왓슨은 후보의 기준을 낮춰야 했다. |
364번째 줄: | 364번째 줄: | ||
======'''알파고의 정의'''====== | ======'''알파고의 정의'''====== | ||
---- | ---- | ||
− | '''알파고(Alphago)'''는 구글의 '''딥마인드'''가 개발한 인공지능(AI) 바둑 프로그램이다. | + | '''알파고(Alphago)'''는 구글의 '''딥마인드'''가 개발한 인공지능(AI) 바둑 프로그램이다. 정책망과 가치망이라는 두 가지 신경망을 통해 결정을 내리며 머신러닝을 통해 스스로 학습하는 기능을 가지고 있다. |
+ | |||
+ | |||
[[파일:image01_Alphago.jpg|500px|center]] | [[파일:image01_Alphago.jpg|500px|center]] | ||
---- | ---- | ||
+ | |||
======'''알파고의 등장 배경 '''====== | ======'''알파고의 등장 배경 '''====== | ||
---- | ---- | ||
388번째 줄: | 391번째 줄: | ||
알파고는 대국에서 수를 둘 때마다 현재의 바둑판 상태로부터 수많은 가상 대국을 만들어낸다. 알파고는 메모리에 생성된 가상 대국을 마주하면서 이 대국이 끝날 때까지 검색 트리에서 하나의 경로를 계속 파고든다. 대국이 끝나면 승패를 알게 된다. 알파고는 이것을 수천 번 반복하여 어떤 수를 둬야 하는지 직관을 깨우치는 것이다. | 알파고는 대국에서 수를 둘 때마다 현재의 바둑판 상태로부터 수많은 가상 대국을 만들어낸다. 알파고는 메모리에 생성된 가상 대국을 마주하면서 이 대국이 끝날 때까지 검색 트리에서 하나의 경로를 계속 파고든다. 대국이 끝나면 승패를 알게 된다. 알파고는 이것을 수천 번 반복하여 어떤 수를 둬야 하는지 직관을 깨우치는 것이다. | ||
− | 대국을 시뮬레이션해야 할 때마다 알파고는 바둑판에 가상의 | + | 대국을 시뮬레이션해야 할 때마다 알파고는 바둑판에 가상의 돌을 놓아가며 대국을 예측했다. 가상 대국이 펼쳐지는 동안 알파고는 신경망을 사용해 바둑판에 놓인 가상의 돌로 다음 수를 결정했다. |
− | 이 신경망을 일단 알파고의 ‘수 예측 | + | |
− | 딥마인드는 사람이 둔 3,000만 개의 수를 인터넷의 바둑 서버에서 다운 받아 알파고의 수 예측 신경망을 학습시켰다. 알파고는 57%의 정확도로 플레이어의 수를 예측했지만, 여전히 | + | |
− | + | 이 신경망을 일단 알파고의 '''‘수 예측 신경망’'''이라고 하자. 이 신경망은 바둑의 전략적인 특성이 들어있었다. 알파고의 수 예측 신경망은 플레이어가 할 수 있는 행동의 모든 경우의 수에 대한 확률 분포를 생성한다. 그리고 알파고는 이 신경망의 출력을 가중치 주사위를 사용해 다음 수를 선택한다. 딥마인드는 사람이 둔 3,000만 개의 수를 인터넷의 바둑 서버에서 다운 받아 알파고의 수 예측 신경망을 학습시켰다. 알파고는 '''57%'''의 정확도로 플레이어의 수를 예측했지만, 여전히 '''불확실성'''을 가지고 있었다. 이에 딥마인드는 바둑 기사의 수를 더 많이 샘플링하면 정확도가 높아질 것으로 생각했다. 그러나 그러기엔 시간이 너무 걸렸다. 알파고는 수 예측 신경망의 속도와 정확성의 한계를 넘어서기 위해 알고리즘의 변형된 버전을 사용해야 했다. | |
+ | |||
+ | |||
+ | 그 결과 딥마인드가 사용한 알고리즘 버전은 '''몬테카를로 트리 탐색 알고리즘(Monte Carlo Tree Search, MCTS)'''이었다. 이 알고리즘은 모종의 의사 결정을 위한 체험적 탐색 알고리즘으로, 특히 게임을 할 때에 주로 적용된다. 선두적 예로 컴퓨터 바둑 프로그램이 있으나, 다른 보드 게임, 실시간 비디오 게임, 포커와 같은 비결정적 게임에도 사용되어 왔다. 몬테카를로 트리 탐색의 매 회는 '''선택''', '''확장''', '''시뮬레이션''', '''역전달'''의 과정으로 구성되는데, 여기에는 2가지 방법이 사용된다. 그 방법은 다음과 같다. | ||
+ | [[파일:image04_MCTS.jpg|800px|center]] | ||
---- | ---- | ||
− | '''1. | + | '''1. 정책망(Policy Network)''' |
---- | ---- | ||
− | 바둑판의 현재 상황을 입력하면 | + | 바둑판의 현재 상황을 입력하면 다음''' 수의 위치'''를 계산해서 알려주는 것이다. 예를 들어 여러가지 경우의 수가 있을 때 '이런 수는 사람이 두지 않는다'고 판단되는 모델이 있다면 그 경우는 탐색 후보군에서 미리 제외함으로써 알고리즘이 탐색할 범위를 좁혀준다. 다음 2가지 방법을 통해서 다음 수의 위치를 예측할 수 있다. |
406번째 줄: | 413번째 줄: | ||
(2) 스스로 발전하기(=RL policy) | (2) 스스로 발전하기(=RL policy) | ||
− | 알파고 vs | + | 알파고 vs 알파고의 대결을 통해서 스스로 게임 전략을 학습하는 것이다. 알파고는 스스로 학습하면서 더 많은 양질의 데이터를 생성하고 이를 바탕으로 프로그램을 향상시킨다. |
---- | ---- | ||
− | '''2. | + | '''2. 가치망(Value Network)''' |
---- | ---- | ||
− | 바둑판의 현재 상황을 입력(input)하면 형세를 판단해서 이길 확률을 알려주는 것이다. 이 방법을 쓰면 확률이 낮은 경로는 끝까지 시뮬레이션 할 필요가 없기 때문에 경우의 수를 줄일 수 있다. | + | 바둑판의 현재 상황을 입력(input)하면 '''승률이 가장 높은 수'''를 알려주는 것이다. 즉, 형세를 판단해서 이길 확률을 알려주는 것이다. 이 방법을 쓰면 확률이 낮은 경로는 끝까지 시뮬레이션 할 필요가 없기 때문에 경우의 수를 줄일 수 있다. |
− | |||
− | |||
− | |||
---- | ---- | ||
453번째 줄: | 457번째 줄: | ||
'''''<div style="text-align:center">“알파고에게 패배한 것이 정말 아팠고,</div> | '''''<div style="text-align:center">“알파고에게 패배한 것이 정말 아팠고,</div> | ||
'''''<div style="text-align:center">AI라는 절대 넘을 수 없는 장벽 앞에서 느끼는</div> | '''''<div style="text-align:center">AI라는 절대 넘을 수 없는 장벽 앞에서 느끼는</div> | ||
− | '''''<div style="text-align:center">허무와 좌절 같은 것이 (은퇴를 하게 된)보다 직접적인 이유다.”</div>''''' | + | '''''<div style="text-align:center">허무와 좌절 같은 것이 (은퇴를 하게 된)보다 직접적인 이유다.”</div>'''''<ref>이세돌의 명언을 찾아보면 '자신이 없어요 질 자신이', '수가 보이는데 어쩌냐' 등의 자신감 넘치는 말들을 많이 볼 수 있다. 그런 그가 알파고와의 대결 후에 위와 같은 인터뷰를 한 것을 보면 엄청난 좌절감을 느낀 것 같다.</ref> |
471번째 줄: | 475번째 줄: | ||
---- | ---- | ||
− | ==주석== | + | ======'''참고문헌'''====== |
+ | ---- | ||
+ | |||
+ | 숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱. | ||
+ | |||
+ | ===주석=== | ||
<references/> | <references/> | ||
</div> | </div> | ||
<br/><br/> | <br/><br/> |
2020년 4월 22일 (수) 12:50 기준 최신판
Netflix의 Cinematch
요구사항
Netflix의 Cinematch에 대한 내용 및 그와 관련해 다루어진 인공지능 기술의 맥락이 무엇인지에 대해 서술할 것. 〔숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱, 2019, 103-152쪽.〕을 기본 원고로 하여 기초 정보를 정리하되, 웹에서 추가적인 정보(텍스트, 이미지, 동영상 등)를 찾아서 보완할 것. |
과제원고 : 김웅기, 김태형, 장민주
"넷플릭스"란 무엇인가?
넷플릭스
- 1997년 설립, 비디오와 DVD 대여 사업으로 시작해 현재는 온라인 스트리밍 서비스를 제공하고 있다. 2019년 기준 전 세계 동영상 스트리밍 시장 점유율 30%의 대형 미디어 회사이다.
- 고객의 이용 패턴 등 빅데이터를 적극 활용한다. 영화 감상 패턴을 분석하여 영화를 추천하는 등의 서비스가 빅데이터 활용의 대표적인 예시이다.
넷플릭스의 서비스에 대해서 간단히 설명한 동영상[1]
"넷플릭스 프라이즈"는 무엇인가?
넷플릭스 프라이즈는 넷플릭스에서 2006년부터 3년간 주최한 시네매치의 성능 개선 대회이다. 시네매치는 넷플릭스에서 자체 개발한 영화 추천 알고리즘으로, 더이상 성능을 개선하기 힘들 것으로 판단되자 100만 달러를 걸고 넷플릭스 프라이즈를 개최했다. 해당 대회의 우승 조건은 시네매치의 성능을 10% 이상 향상시키는 것이었다.
100만 달러에 달하는 상금에 대해 우려의 목소리가 있었으나, 넷플릭스 CEO 리드 헤이스팅스는 영화 추천 알고리즘이 10% 이상 개선되었을 때 얻을 이익이 상금을 상회할 것이므로 문제가 되지 않을 것이라 답변했다.
넷플릭스 프라이즈는 "왜" 필요했는가?
2020년 현재 넷플릭스가 비디오 스트리밍 서비스를 주력으로 하는 것과는 달리, 2000년대 중반 당시 넷플릭스는 주로 우편을 통한 미국 내 DVD 대여 서비스를 제공했다. 우편 대여 서비스의 가장 큰 단점은 고객까지의 배송 기간이 길다는 것이었다. 더욱이 고객 변심으로 영화를 변경하거나, 도착한 후에 고객의 취향에 맞지 않을 경우 교환에 드는 시간만큼 기간이 연장되었다. 일반적인 비디오 대여점의 경우에는 신작이나 유명 영화를 추천 매대에 진열하는 식으로 영화 변경이나 취향에 맞지 않을 경우를 방지하였으나, 보유 영화의 70%가 독립 영화 내지 고전 영화로 이루어진 넷플릭스에서는 이러한 전략을 사용하기 어려웠다.
영화 추천 알고리즘인 시네매치는 수많은 비인기 타이틀, 긴 대기 시간이라는 악조건을 극복하기 위한 넷플릭스의 전략이었다. 추천한 영화를 본 고객이 만족하지 못한다면 그대로 서비스를 해지할 확률이 상승할 것이었다. 때문에 시네매치의 성능을 개선하는 것은 곧 넷플릭스의 향후 수익을 결정하는 주요한 과업이었다. 다행히 넷플릭스에게는 1998년 창업 이후부터 2005년 당시까지 고객 별점 데이터가 누적되어 있었다. 이는 시네매치의 개선을 위한 최고의 재료였다. 넷플릭스 프라이즈는 이 데이터를 "어떻게" 사용해야 할 지 알아내기 위한 시도였다.
넷플릭스 프라이즈가 제시한 과제
상술하였듯, 넷플릭스 프라이즈의 목표는 시네매치의 성능을 10% 이상 개선하는 것이었다. 이를 달성하는 팀에게는 100만 달러의 상금이 지급될 것이었으며, 이를 달성하지 못하더라도 매년 중간 목표치에 도달하는 팀 중 1위에게는 5만 달러의 '프로그레스 프라이즈' 상금이 약속되었다. 넷플릭스 프라이즈가 개최된 첫 해, 20,000여개의 팀이 등록되었으며 2,000여개의 팀이 알고리즘을 제출하였다.
대회에서 참가자들에게 제시된 과제는 명확했다. 참가자들은 1998년부터 2005년까지의 데이터를 바탕으로 특정 고객이 특정한 날, 특정 영화에 매긴 평점을 예측해야 했다. 넷플릭스는 예측 값과 실제 값의 평균 제곱 오차를 계산하여 각 팀이 개발한 알고리즘의 성능을 평가하고 그 순위를 발표했다.
넷플릭스 프라이즈의 진행(1년차)
넷플릭스 프라이즈에서 초기에 두각을 나타낸 팀들은 대부분 데이터 분석에 전문성을 지닌 참가자들로 구성되어 있었다. AT&T 연구소 소속 연구원들로 구성된 '벨코' 팀은 두 가지 원리를 결합해 기본적인 추천 엔진을 설계했다. 이들이 초기 엔진 설계에 활용한 원리는 다음과 같다.
- E.T. 효과 : 영화 자체가 얼마나 인기 있는지만 계산에 반영한다. 만일 천만 관객을 기록한 <해운대>와 천 명도 보지 않은 독립 영화를 비교한다면 <해운대>가 무조건 더 높은 점수를 받게 되는 것이다.
- 스크루지 효과 : 이용자들이 영화 평점을 매길 때 보이는 개인적 경향을 분석하여 반영한다. 만일 점수를 전체적으로 후하게 주는 사람이라면 다음에 평가할 때도 후하게 줄 확률이 높고, 박하게 주는 사람이라면 다시 박하게 줄 확률이 높다고 예상하는 것이다.
상술한 두 효과를 활용한 추천 엔진은 효과적이었으나 큰 문제를 가지고 있었다. 바로 고객의 개별성을 따지지 않고 무조건 유명하고 인기 있는 영화를 추천한다는 것이었다. 해당 엔진으로는 개인화된 추천 결과를 도출할 수 없었다. 만일 이용자가 B급 영화, 컬트 영화, 고전 영화, 어린이 영화 등을 좋아한다고 해도 무조건 유명하고 평점이 높은 영화를 추천했던 것이다. 즉, A 장르를 좋아하는 그룹, B 장르를 좋아하는 그룹, A와 B 모두를 좋아하는 그룹, 둘 다 좋아하지 않는 그룹 등 이용자들의 개인적 취향을 고려하는 터미네이터 효과를 만족시킬 필요가 있었다. - 행렬 인수 분해(matrix factorization) : 참가자들은 넷플릭스 측에서 제공한 데이터가 사실상 중복된 정보를 다수 가지고 있는 거대한 행렬임에 주목했다. 중복된 정보는 개인화된 추천 기능을 제공하기 위한 기반이었다. 단순히 생각하자면, 공포 장르를 선호하는 이용자에게는 공포 장르를 추천했을 때 선호도가 높을 것이고, 코미디를 즐겨 보는 이용자는 코미디 장르를 선호할 것이라는 판단에서 비롯한 것이라 할 수 있다. 그러나 이러한 분석이 완전할 수는 없다. 같은 장르도 여러 분야로 구분될 수 있다는 점, 선호하는 장르에도 우선순위가 있다는 점, 장르가 복합된 영화가 존재한다는 점 등이 해당 분석 방식의 신뢰도를 낮춘다.
- 이러한 문제점을 해결하며 행렬 인수 분해를 적용하기 위해 두 가지의 기반 데이터가 필요하다. 1)영화가 속하는 장르[2]와 2)넷플릭스 이용자의 장르 선호도가 바로 그것이다.
- 행렬 인수 분해는 두 가지의 데이터에 기반하여 작동한다. 우선 <쥬라기 공원>이 속한 장르(SF, 모험)에 1이라는 값을, 속하지 않은 장르에 0이라는 값을 부여한다.< 그리고 스필버그 감독의 대략적인 선호도를 분석해 장르마다 각각의 가중치를 준다. 장르별로 부여된 값과 선호도 가중치를 곱한 후, 그 결과를 합산하면 스필버그 감독이 <쥬라기 공원>에 가질 선호도를 계산할 수 있다.
그러나 위의 계산법에는 치명적인 단점이 있다. 영화의 장르 구분이 데이터에서 도출된 것이 아닌, IMDB이라는 외부 데이터 베이스를 통해 분류된 것이라는 사실이다. 참여자들은 이를 개선하기 위해 다음과 같은 방법을 선택했다.
- 행렬 인수 분해를 개선한 방법 : 외부에서 분류한 장르 구분은 넷플릭스 이용자들이 받아들이고 있는 장르와 어쩔 수 없는 차이를 가지고 있다. 이 때문에 참여자들은 제공된 데이터를 통해 가공의 장르를 만들고, 가공의 장르에 대한 이용자들의 선호도를 교차하여 검증하면 이전의 방식보다 더 확실한 예상치를 얻을 수 있다. 즉, 데이터로부터 장르와 장르에 대한 선호도를 번갈아 재학습하는 과정을 통해 정확도를 높인다는 것이다.
한편, 기능 향상률이 높은 팀들은 여러 개의 모델을 활용해 평균값을 내는 방식을 채용했다.
- 1년차 결산 : 상위 팀들은 약 8%의 성능 향상을 달성했다. 10%를 달성하지 못했기에 넷플릭스 프라이즈의 수준에는 도달하지 못하였으나, 1위 팀에겐 프로그레스 프라이즈가 주어지기 때문에 2위 그래비티 팀과 3위 공룡행성 팀은 1위 벨코 팀을 치열하게 추격했다. 두 팀은 끝내 서로 결합하였으나 0.05%의 근소한 차이로 프로그레스 프라이즈를 수상한 것은 벨코 팀이었다.
- 벨코 팀은 프로그레스 프라이즈 수상으로 5만 달러를 받았으나, 규칙상 자신들의 알고리즘을 타 팀에게 공개해야 했다. 다른 팀들은 1위 팀의 알고리즘을 참고해 자신들의 모델 성능을 향상시킬 수 있었다.
넷플릭스 프라이즈의 진행(2년차)
좋은 결과를 도출하는 구성 요소를 1년차에 거의 모두 발견한 탓에, 참여자들의 성능 향상은 지지부진해졌다. 프로그레스 프라이즈를 수상한 벨코 팀의 경우 첫해에는 매주 평균 0.16%씩 성능을 향상시켰으나 두 번째 해에는 매주 평균 0.02% 향상에 그쳤을 따름이다. 참여자들은 조금 더 세밀한 요소를 고민하기 시작했다.
- <나폴레옹 다이너마이트> : 연구자들은 컬트 영화 <나폴레옹 다이너마이트>에 주목했다. 200만 건 이상의 평점 데이터를 가졌으나 대부분 1점 혹은 5점으로 구성되어 당시까지의 추천 엔진으로는 제대로 된 추천이 불가능한 영화였다. 연구자들은 <나폴레옹 다이너마이트>와 같은 영화의 추천 여부를 결정하기 위해 세 가지의 방법을 떠올렸다.
- 1) 비슷한 영화 추천 - 예를 들어 <신데렐라>를 선호하는 이용자가 아직 <잠자는 숲 속의 미녀>의 평점을 매기지 않았다면 해당 영화를 추천하는 방식이다.
- 2) 비슷한 사용자 추천 - 만일 A 지역 사람들이 <백 투 더 퓨처>를 선호한다면, A 지역 사람들과 비슷한 선호도를 가진 사람에게도 <백 투 더 퓨처>를 추천하는 방식이다.
- 3) 사용자가 평점을 매긴 영화 분석 - 어떤 사용자가 <해리포터> 시리즈에 평점을 매긴 적이 있다면, <해리포터와 비밀의 방>을 보지 않았더라도 좋아할 확률이 높다고 추론하는 방식이다.
- 참여자들은 위와 같은 방식으로 암시정보[3]를 취합해 상대 오차를 10% 가까이 감소시켰다.
- 시간에 따른 평점 예측 : 참여자들은 시간에 따라 이용자들의 평점이 다르게 매겨진다는 사실을 발견했다. 영화의 인기 순위는 시간에 따라 변하며, 이용자들이 본 영화의 종류도 시간에 따라 변하기 때문이었다.
- 위의 표는 인기영화 <매트릭스> 1편의 인기도 변화를 10주 단위로 측정한 결과이다. 1999년 출시 이후 꾸준히 감소하던 인기도가 <매트릭스> 2편이 개봉한 2003년에 다시 급등한 것을 볼 수 있다.
- 기타 데이터 : 1년이 넘는 기간 동안 참여자들은 특이한 변수들을 다수 발견했다. 몰아서 매기는 별점은 그 범위가 줄어든다는 것, 제목에 숫자가 들어갔는지의 여부로 영화에 대한 호감도가 영향받는다는 것, 평점을 몰아서 매길 때 오히려 점수가 더 올라가는 영화나 더 내려가는 영화가 존재한다는 것 등이다. 이러한 요소들은 미미하지만 조금 더 정확한 선호도 예상에 도움이 되는 변수임이 밝혀졌다.
- 과적합 : 조금 더 정확한 결과 도출을 위해 모델 하나에 수많은 변수를 추가한 결과, 연구자들은 유연성이 증가되고 성능이 향상된 모델을 가지게 된 것으로 보였다. 그러나 많은 변수가 추가된 모델은 좋은 결과를 보이는 듯 싶지만 실제 성능은 좋지 않은 과적합 양상을 보였다.
- 모델 블렌딩 : 과적합 문제를 해결하기 위해 활용된 것이 단순한 모델 여러 개를 함께 사용하는 방식이다. 벨코 팀의 알고리즘과 논문으로 블렌딩한 모델이 잘 작동한다는 것은 모두 알고 있었고, 그래비티-공룡행성 팀이 서로의 모델을 블렌딩하여 벨코 팀의 프로그레스 프라이즈 수상을 위협한 것 역시 공공연히 알려진 사항이었다.
- 모델 블렌딩은 부스팅을 통해 더 향상되었다. 참여 팀들은 아주 간단한 모델로 평점을 예측하고, 잘못 예측한 평점 결과를 증폭시켜 다음 처리 과정에서는 해당 값을 더 신중하게 처리하도록 조정한다. 이렇게 학습시킨 수십, 수백, 수천 개의 모델들의 평균을 구하면 결과적으로 어떤 다른 모델보다도 더 좋은 결과를 보이게 된다.
- 2년차 결산 : 2년차의 프로그레스 프라이즈 수상을 위한 향상률은 9.43%였다. 하지만 1위를 다투던 벨코와 빅카오스 둘 다 9.43%를 달성하려면 한 달 이상이 더 필요했다. 결국 두 팀은 한 팀이 될 것을 선택했고, 그 결과 9.44%를 겨우 달성해 프로그레스 프라이즈를 수상했다.
넷플릭스 프라이즈의 진행(3년차)
3년차에 들어선 연구 커뮤니티는 모델 최적화, 블렌딩보다 팀을 합치는 것에 관심을 가졌다. 2년차 프로그레스 프라이즈 수상 팀인 ‘빅카오스 안의 벨코’ 팀은 ‘실용이론’ 팀과의 결합으로 ‘벨코의 실용 카오스’ 팀을 구성했고, 1년차 2위 팀인 ‘그래비티와 공룡 연합’ 팀은 ‘그랜드 프라이즈’로 이름을 바꾸었다가 30여 개가 넘는 팀의 집합인 ‘앙상블’ 팀을 꾸렸다. 소수 넷째자리까지 가는 치열한 대결 끝에 20분 먼저 모델을 제출한 벨코의 실용 카오스 팀이 10.06%의 성능 향상으로 넷플릭스 프라이즈를 수상했다.
넷플릭스가 얻은 것은 무엇인가?
여러 해프닝에도 불구하고, 넷플릭스는 「넷플릭스 프라이즈」에서 많은 결과를 얻었다. 첫째, 행렬 인수 분해와 신경망이 주목할 만한 성능 향상을 가져다준다는 것을 발견했다. 둘째, 110만 달러로 최신 연구 자료를 얻을 수 있었다. 기술 측면에서도 수만 개에 달하는 모델이 설계되었으며, 이들의 아이디어가 널리 알려지는 데 공헌한 것으로 판단된다.
참고문헌
숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱, 2019, 103-152쪽.
주석
- ↑ https://www.youtube.com/watch?v=9eqIBoURn94
- ↑ 이 단계에서는 IMDB의 장르 구분에 기초한다.
- ↑ 눈에 보이지 않는 정보를 말한다.
IBM의 Watson
요구사항
IBM의 Watson에 대한 내용 및 그와 관련해 다루어진 인공지능 기술의 맥락이 무엇인지에 대해 서술할 것. 〔숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱, 2019, 268-322쪽.〕을 기본 원고로 하여 기초 정보를 정리하되, 웹에서 추가적인 정보(텍스트, 이미지, 동영상 등)를 찾아서 보완할 것. |
과제원고 : 아슈토시, 이만호, 임연
(내용 작성)
동영상
IBM 왓슨
2011년 1월 <제퍼디!> 역사상 가장 뛰어난 성적을 올렸던 켄제닝스와 브래드 러터는 IBM 연구 팀이 개발한 컴퓨터 프로그램 왓슨을 상대로 시합을 했다.
<제퍼디!Jeopardy!>
알렉스 트레벡 (Alex Trebek) 은 미국의 유명한 TV 퀴즈 쇼 <제퍼디!>의 진행자 이며, 참가자들은 이 퀴즈 쇼에서 고고학, 생물학, 영화를 비롯한 다양한 잡학 상식을 겨룬다. 알렉스가 참가자에게 어떤 문제를 답 형식으로 문제의 단서를 제공하면 참가자는 질문 형식으로 문장을 꾸며 답을 해야 한다.
- 예시:
- 이 사건에는 목격자가 없으며 블랙홀의 경계에서는 어떤 물질도 탈출할 수 없다. (알렉스가 단서를 읽는다 )
- 사건의 지평선이란? (응답자)
컴퓨터가 어떻게 하면 이런 문제에 답을 할 수 있을까? 컴퓨터는 어떤 정보를 알고 있어야 할까? 그 정보를 어떻게 저장하고 있어야 할까? 그 정보를 검색하려면 문제를 어떻게 처리해야 할까? IBM의 연구자들은 연구자들은 단순히 문제를 읽고, 이해하고, 지금까지 알고 있는 내용에서 답을 떠올리는 프로그램을 만드는 것이 아니었다. 왓슨의 프로그래머는 각 단서에 답을 하기 위해 따라가야 할 작업 순서를 왓슨에게 명확히 가르쳐야 했다. <제퍼디!> 이 퀴즈 쇼에서는 사실에 대한 문제를 던진다. 왓슨은 이러한 사실을 데이터베이스에 저장한다. 이러한 사실은 관계 (relation) 라고 하는데 사람, 장소, 사물이 서로 어떻게 연결되어 있는지를 나타낸다. 왓슨은 관계 데이터를 검색하여 데이터베이스에서 단순한 답변을 찾아낼 수 있지만, 데이터베이스에 저장된 데이터와 관련이 있는 문제는 전체 문제의 4분의 1 정도밖에 안 되었다. 게다가 이런 단순한 답변을 검색할 수 있는 문제는 2%에 불과했다. 그렇다면 왓슨은 나머지 98%의 단서에 어떻게 답을 할 수 있었을까?
DeepQA
IBM은 <제퍼디!>에 프로텍트에 착수했고 프로젝트가 진행됨에 따라 여러 내부 문제에 직면해야 했지만 데이비드 페루치 (David Ferrucci) 가 이 프로그램을 진행할 것을 제안하였다. 하지만 4명으로 구성된 팀이 6년에 걸쳐 질의 응답 시스템을 개발했지만 이 질의 응답 시스템을 곧바로 <제퍼디!>에 적용할 수는 없었기 때문에 페루치의 팀은 <제터디!>에서 시합을 할 수 있도록 한 달 동안 질의 응답 시스템을 전환하는 작업을 했다.
- 시스템을 평가할 기준
<제퍼디!>의 팬들은 그동안 방영된 <제퍼디1>의 문제와 답을 수집해 놓은 웹 사이트를 만들었고, 여기에서 문제에 대한 상세한 정보를 찾을 수 있다.
IBM팀은 이 웹 사이트를 이용하여 과거 <제퍼디!> 우승자의 성적 통계를 냈다. <제퍼디!>의 우승자는 버저를 얼마나 많이 눌렀는지, 우승자가 버저를 눌렀을 때 정답률은 얼마나 되었는지, 페루치의 팀은이 두 가지 수치를 이용하여 과거 <제퍼디!> 우승자가 얼마나 정확히, 그리고 얼마나 많이 답변을 시도했는지 보여주는 분산 (scatter) 차트를 만들었다. 그들은 이 차트를 "승자의 구름" 이라고 불렀으며 왓슨의 평가를 위한 기준 자료로 활용했다. 왓슨의 성적이 이 구름 안으로 들어간다면, 이는 곧 왓슨의 성적이 인간 우승자의 성적과 견줄 만한 수준이 된다는 것을 의미했다. 왓슨의 성적이 이 구름을 넘어선다면 인간을 이길 수 있는 것이다.
(시스템을 평가해보니까 엉망이었다......)
그리하여 페루치의 팀은 학계 최신 방법론을 도입한 실험을 시작 했다. 몇 달 동안 실험을 마친 후 마침내 쓸 만한 시스템 구조를 찾아내 DeepQA라는 이름을 붙였다. DeepQA의 접근 방식은 단순했다. 다른 질의 응답 시스템과 마찬가지로 [오른쪽 그김]과 같은 명확한 단계를 거쳐 해답에 도달하는 방식이다. 문제를 분석하고 검색 엔진을 사용해 답변 후보를 물색한 후 답변을 조사하고 시스템이 찾아낸 근거를 바탕으로 이 답변에 점수를 매기는 식이다. 먼저 이 파이프라인[1]의 첫 번째 단계인 왓슨의 문제 분석 단계를 살펴보겠다.
- 문제분석
문제 분석 단계에서 왓슨의 목표는 문제를 정보의 조각으로 분해하는 것이다. 이를 나중에 파이프라인에서 답변을 찾아내거나 답변에 점수를 매길 때 활용하기 위해서이다. 다른 단계와 마찬가지로 문제 분석 단계는 NLP (natural language processing,자연어 처리) 분야에 크게 의존했다. NLP는 왓슨에게 단서를 구성하는 단어로부터 뭔가 의미 있는 정보를 이끌어 낼 수 있는 능력을 주었다. 왓슨은 NLP를 사용해서 단서를 구성하는 단어를 발견하고, 단서에서 이름과 장소를 찾아 내고, 단서에서 문장 구조도 (sentence diagram) 를 만들어 냈다
문제 분석 단계에서 왓슨의 가장 중요한 임무는 단서로 제시된 문장에서 실제 문제가 무엇인지를 구체적으로 요약하는 것이다.예를 들면:
간에서 염증을 일으키는 B형 이것은 사람끼리 접촉하여 전파 된다.
It’s the B form of this inflammation of the liver that’s spread by some kinds of personal contact.
단서가 시사하는 대상을 요약한 문구는 ‘간에서 염증을 일으키는 이것 (this inflammation of the liver) ’이다. 왓슨의 연구원들은 이 문구를 ‘초점 (focus) ’이라고 불렀다. 초점은 단서의 일부분이며 초점의 문구를 답으로 대체하면 단서는 사실을 구성하는 문장이 되었다.
단서에서 초점 ‘이것’을 ‘간염’으로 대체하면 이런 문장이 된다. 초점과 답변은 볼드체로 표시했다.
B형 간염은 사람끼리 접촉하여 전파된다.
It’s the B form of hepatitis that’s spread by some kinds of personal contact.
이제 이 단서는 사실을 나타내는 문장이 되었다.
왓슨이 문제에서 추출할 수 있는 정보의 유형이 한 가지 더 있는데 이는 답변 유형을 설명하는 단어나 문구였다. 이 단서는 무엇에 관해 묻고 있는가? 왓슨은 이러한 정보를 사용해서 답변 후보를 물색한 후 나중에 파이프라인에서 답변에 점수를 매겼다.
이 단계에서 왓슨이 답변 유형에 대한 정보를 저장해 두었다가 이후 단계에서 답변 후보를 선별하고 답변의 범위를 좁히는 데 사용한다. 예를 들어, 만약 문제가 질병에 대한 것이었다면, 왓슨은 이후의 단계에서 실제로 질병과 관련된 답변에 높은 가중치를 주고 질병의 증상과 관련된 답변에는 낮은 가중치를 주는 방식으로 답변의 범위를 좁힐 수 있을 것이다.
가끔 왓슨에게 제시된 단서가 몇 안 되는 명사나 동사로 구성된 문구일 경우가 있다. 이런 종류의 단서 중에는 단어 하나가 단서인 경우도 있다. 이렇게 답변 유형을 찾을 수 없는 경우 왓슨은 답변 유형을 찾기 위해 단서의 범주를 검색한다. 예를 들어, 단어 ‘콜슬로’ 하나가 단서 일 경우, ‘콜슬로’ 범주는 주 재료로 들어가는 채소였으므로 이 경우 왓슨은 답변 유형을 채소로 지정한 뒤 나중에 이 정보를 사용하여 옳은 답을 찾을 수 있었다. 그리고 이 단서의 답은 ‘양배추’였다.
그렇게 왓슨은 단서를 분석하여 유용한 정보라면 무엇이든지 뽑아냈다. 이런 정보 중 일부는 패턴 매칭 (pattern matching) 을 사용해 찾아 냈다.
- 왓슨의 문장 해석 방법
왓슨은 단서를 펙스트 파일 형식으로 전달받았다. 왓슨이 텍스트 파일을 열어 인지할 수 있는 것은 정렬된 문자열뿐이었으며, 이 문자열을 이해하기 위해 자연어 처리 기법을 사용했다.
이 문자열을 왓슨에게 이해시키는 첫 번째 방법은 단서를 문자열이 아닌 일련의 단어로 해석하는 것이다. 일단 왓슨이 단서를 여러 단어로 받아들이고 나면 이를 처리하기 위해 여러 흥미로운 기법을 동원했다. 이들 기법 중 가장 중요한 것은 단서의 구조에서 문장 구조 도를 만들어 내는 것이다. 컴퓨터는 파싱 (parsing)이라는 과정을 거쳐 문장 구조도를 생성한다. 이 과정의 결과물은 보통 파스 트리 (parse tree) 라고 한다.
(▲ 오른쪽 그림 문장 파스 트리의 예시 ‘Milorad cavic almost upset this man’s perfect 2008 Olympics, losing to him by one hundredth of a second.’라는 문장의 파스 트리.
왓슨이 문장을 파싱하는 방식은 이 그림과 일치하지는 않지만 기본 아이디어는 같다.)
문장 구조도가 만들어지고 나면 왓슨은 이 구조도를 사용해 좀 더 흥미로운 방식으로 문제 분석을 수행할 수 있었다. 우선 왓슨이 어떻게 파스 트리를 만드는지 간략히 살펴보겠다. 컴퓨터가 파스 트리를 만들 때 사용하는 탐색 알고리즘은 시내 주행에서 경로를 계획할 때 보스가 사용했던 방식과 닮은 점이 많다. 보스가 지도에서 최적의 경로를 탐색하기 위해 탐색 알고리즘을 사용한다면, 왓슨의 파서 (parser)는 문장의 단어들을 문법에 맞게 트리 형태로 구성하는 최적의 경로를 찾기 위해 탐색 알고리즘을 사용한다. 오늘날의 파서는 단어 간의 관계와 문장 요소에 대한 통계를 사용해서 가장 적절한 파스 트리를 찾아낸다.왓슨의 파서는 모든 단어가 기본 요고가 될 때까지 문장을 분석할 수 있다. 문장 파서는 이러한 규칙을 사용한다. 문장을 파싱하기 위해 파서는 문법을 사용해 문장을 분해할 최적의 방법을 탐색하고, 문장을 더 이상 작은 단위로 분해할 수 없을 때까지 이 작업을 계속한다.
왓슨은 이러한 문장 구조도를 생성할 수 있지만 문장의 의미는 이해할 수 없었다. 그렇다면 프로그래머는 문제를 보지도 않고 어떻게 해석할 수 있는 걸까? 왓슨 개발자가 왓슨이 스스로 문장 구조도를 탐색하여 단서에서 의미 있는 정보를 추출하도록 다양한 규칙을 직접 만들어 넣었다.
왓슨은 이러한 규칙을 사용하여 DeepQA 파이프라인을 통해 파스 트리를 조사하는 방식으로 문제 분석 단계를 시작할 수 있었다. 왓슨은 파스 트리를 사용하여 단서의 초점을 찾아냈다. 다시 말하면, 초점은 단서 안에 존재하는 문구로 문제가 정확히 무엇을 묻고 있는지를 나타낸다. 초점을 찾기 위해 왓슨은 ‘이것 (this) ’ 또는 ‘이것들 (these) ’로 표현된 명사구를 검색하는 등의 간단한 규칙을 사용했다.
(▲ 오른쪽 그림: 왓슨이 문제 분석 단계에서 단서로부터 찾아낸 가장 중요한 정보 중 일부)
왓슨이 정보에 이름을 붙이는 과정을 끝내고 나면 단서에 대한 옳은 답을 찾기 위한 매우 힘든 과정이 남아 있다. 이를 위해서 왓슨은 흔히 생각할 수 있는 데이터 소스를 일부 활용하기도 했다. 예를 들면, 사전, 지도, 영화 데이터베이스, 심지어 위키피디아까지도 사용했다. 다음 장에서 살펴보겠지만, 왓슨은 인간과는 아주 다른 방식으로 이러한 데이터 소스를 활용했다.
<제퍼디!>의 답 마이닝하기
DeepQA 시스템의 첫 단계는 문제 분석 단계이다. 문제 분석 단계의 목적은 단서 안에서 쉽게 추출할 수 있는 인물, 장소 등의 대상에 대한 정보를 수집하고, 단서에서 묻고 있는 답변 유형을 알아내고, 이러한 정보 조각에 이름을 붙여 저장한 뒤 이후에 다른 단계에서 이들 정보를 활용하도록 하는 것이다. 앞으로 살펴볼 DeepQA의 나머지 단계에서는 정답을 찾아내는 작업을 수행한다.
왓슨은 인간이 하는 방식으로 답을 찾지 않는다.
->> 인간 :
인간은 문제에 대해 생각하고 답과 관련된 적절한 문맥을 선택한 후 그 문맥의 범위 내에서 답을 찾는다. 만약 이 문맥에서 답을 찾지 못한다면 두 번째로 적절한 문맥에서 답을 찾으려고 하거나 다른 방식으로 실마리를 찾아내 생각의 방향을 바꾸려고 시도할 것이다. 일단 답을 찾으면 책을 덮고 확신에 차서 그 답을 말할 것이다.
->> 왓슨:
반면에 왓슨은 문제 하나하나를 대규모 연구 프로젝트로 간주한다.
왓슨의 문제 해결 단계는 채용 조건에 완벽하게 들어맞는 사람을 찾아내는 채용과정과 아주 비슷하다. 첫 번째 단계에서는 자세한 채용 공고를 만들어야 한다. 이 단계가 왓슨의 문제 분석 단계에 대응한 다. 왓슨이 일단 채용 공고를 작성하고 나면, 이제 다양한 출처로부터 조건에 맞는 수백 명의 이력서를 수집하고, 인터뷰에서 후보자를 자세히 조사한 후 심사숙고해서 적임자를 선별하기 위해 각 후보의 장단점을 평가해야 한다.
왓슨은 답변 후보 목록을 만들기 위해 이와 비슷한 접근 방식을 사용했다. 왓슨의 목적은 정답을 선별하는 것이 아니라 정답으로 고려할 만한 답변 후보를 수집하는 것이다. 채용보다 약간 까다로운 면이 있는데, 적임자가 한 명 이상 존재하는 인재 채용과 달리 <제퍼디!> 문제의 단서에는 정답이 단 하나만 존재 한다는 것이다. 후보 생성 단계가 끝났을 때 왓슨의 후보 목록에 정답이 들어 있지 않다면 왓슨은 답을 맞힐 기회 자체가 없어지는 것이다. 그러므로 왓슨은 후보의 기준을 낮춰야 했다.
왓슨은 이 단계에서 정답을 선별하는 게 아니라는 점을 주의해야 한다. 이 단계에서는 단지 목록 어딘가에 정답이 있다는 것만 확실히 하면 된다. 왓슨이 다양한 소스를 검색하는 것은 그러한 이유 때문이다.
왓슨은 광대한 비구조적 (unstructured) 데이터들, 사전이나 뉴스 기사 같은 문서, 위키피디아 항목, 문학 작품, 사전, 유의어 사전 등에서 닥치는 대로 답변 후보를 검색했다. 하지만 왓슨은 이렇게 엄청난 데이터에서 어떻게 몇 초 만에 정답을 찾아낼 수 있을까? 왓슨은 대규모 텍스트 문서를 검색하는 것처럼 검색 엔진을 사용했다. 왓슨은 시합에서 인터넷에 접속할 수 없기 때문에 구글 같은 검색 엔진을 사용할 수 없었다. 그래서 연구원들은 왓슨의 인터넷 접속이 차단되기 전에 왓슨의 문서를 전부 모아서 자체 검색 엔진에 업로드 했다. 이 검색 엔진은 시합을 하는 동안 IBM의 데이터 센터에서 왓슨의 일부처럼 실행되었다.
왓슨이 이 검색 엔진을 사용하려면 검색질의 (query)를 만들어야 했다. 그래서 문제 분석 단계에서 단서로부터 추출한, 중요하다고 판단된 단어와 구절을 사용하여 검색 질의를 만들었다. 질의에는 정답의 유형 또한 포함되었다. 단서에서 관계 정보를 찾아내면 이와 관련 있는 후보 에는 더 높은 가중치를 두었다. 왓슨이 검색 엔진에 이 질의를 전송하고 나면 검색 결과에 더 많은 답변 후보가 추가된다. 가끔 이 작업에서 하는 일이 단순히 검색 결과에 표시된 제목을 답변 후보에 추가하는 것이 전부일 경우도 있다. 대부분 왓슨은 좀 더 미묘한 기법을 동원했다.
제임스 팬은 한 달 동안 최저 기준의 시스템을 해킹하면서 답변 후보를 생성하는 데 위키피디아가 매우 효과적이라는 사실을 발견했다. 이러한 정보를 알게 된 팀은 위키피디아를 왓슨의 후보 생성 단계의 기초 데이터로 사용했다. 이렇게 뽑은 답변 후보는 언뜻 봐도 괜찮은 것 같다. 부분적일지 몰라도 이들 후보 중 몇 명은 최소한 원래 단서에서 요구하던 답변 유형이기 때문이다. 하지만 왓슨은 이 답변 후보의 정답률이 더 높은 지는 아직 알 수 없다.
왓슨은 수백 개의 답변 후보가 담긴 목록을 작성한 후 그중 어느 것이 정답인지 알아내야 한다. 왓슨은 답변 후보를 어느 정도 조사하여 가벼운 필터 (lightweight filter) 로 답변 후보 목록의 범위를 좁혀야 한다. 왓슨의 가벼운 필터 또한 답변 후보가 답변 유형과 일치하는 지를 간단하게 검사했다. 가벼운 필터를 통과한 답변 후보는 증거 수집 (evidence retrieval) 단계로 넘어가고 왓슨은 각 답변 후보에 대한 정보를 수집한다.
증거 수집 단계는 채용 과정에서 대면 (onsite) 면접과 유사하다. 실제 면접이라면 몇 명의 지원자만 대상으로 하겠지만 왓슨은 100여 개의 답변 후보를 자세히 조사했다. 이를 위해 왓슨은 데이터베이스와 검색 엔진을 다시 한 번 사용해야 했다. 면접에서는 지원자에게 채용 공고에 올린 채용 요건을 다시 하나 하나 묻지는 않을 것이다. 그보다는 지원자 개인의 배경과 채용 공고의 특정 항목 등을 구체적으로 묻기 위해 지원자별로 다른 질문을 준비하여 해당 업무에 잘 맞는지 가려내야 한다. 왓슨도 답변 후보를 조사할 때 비슷한 일을 한다. 왓슨 역시 답변 후보와 단서에 맞춰서 구체 적인 검색 질의를 준비하여 자신의 데이터 소스를 조사한다.
왓슨은 단서와 답변 후보에서 찾아낸 중요한 단어와 문구를 결합하여 검색 질의를 만든다. 그다음 왓슨은 자체 검색 엔진에 이 검색 질의를 입력한다. 그러면 [오른쪽 그림]과 같이 각 답변 후보와 단서에 맞춘 증거를 수집할 수 있다. 이 조사 과정에서 왓슨은 개별 답변 후보의 신빙성을 뒷받침할 수 있는 증거를 모은다. 이 증거는 대부분 검색 결과에서 수집한 텍스트 조각일 뿐이다.
(▲ 오른쪽 그림: 왓슨의 증거 수집 단계 왓슨은 먼저 가벼운 필터를 사용해 답변 후보의 수를 줄인 후, 자체 데이터베이스와 검색 엔진으로부터 아직 남아 있는 답변 후보에 대한 증거를 수집했다.)
물론 왓슨이 첫 번째 답변 후보만 조사하고 끝내지는 않는다. 왓슨은 가벼운 필터를 통과한 나머지 답변 후보도 모두 자세히 조사한다. 왓슨이 증거 수집 단계에서 사용한 데이터 소스는 위키피디아에만 있는 것이 아니다. 앞에서도 말했듯이 왓슨은 사전, 유의어 사전, 백과 사전, 과거의 뉴스 기사, 표로 정리한 관계 정보 등 여러 소스를 활용했다. 왓슨 개발자는 개별 데이터 소스에 맞게 왓슨의 질의를 적절히 조정했다. 왓슨은 문제 분석 단계의 단서에서 알아낸 정보와 답변 후보를 조사한 정보, 단서의 파스 트리에서 추출한 정보 등을 토대로 각각 연관된 데이터 소스에 맞는 검색 질의를 생성했다. 그 뒤 나중 단계에서 사용하기 위해 검색 결과를 저장했다.
증거 수집 단계가 끝나면 왓슨은 이 결과를 점수 계산 알고리즘에 입력한다. 왓슨이 문제를 분석하기 위해 다양한 규칙을 사용했던 것처럼 점수 계산 단계에서도 다양한 규칙을 사용하여 각 답변 후보의 증거를 분석한다. 여러분이 볼 때 이 채점기 (scorer) 는 왓슨에게 가장 흥미로울 것이다. 채점기 알고리즘은 답변 후보의 증거를 구성하는각 정보가 단서에 얼마나 잘 들어맞는지를 평가한다.
왓슨은 다양한 채점기를 사용해 증거를 평가하는데 각각의 알고리즘은 매우 간단하다. 채점기 하나를 예로 들면, 이 채점기는 단서와 증거의 텍스트에서 중복으로 나오는 단어의 개수를 센다. 각 단어의 가중치를 매길 때에는 단어가 전달하는 ‘정보’의 양이 얼마인지를 간접 적으로 가늠해 볼 수 있는, 희소한 단어일수록 더 큰 가중치를 매기는 IDF (inverse document frequency) 라는 접근법을 사용했다. 이 방식의 기저에 있는 발상은 드물게 등장하는 단어일수록 희소성 때문에 좀더 정확한 정보를 전달한다는 데 있다. 또한 이 발상은, 만약 단서와 증거 텍스트 둘 다 희소한 단어를 포함하고 있다면, 상대적으로 흔한 단어 (‘almost’, ‘one’ 같은) 가 포함되어 있을 때보다 높은 가중치를 주어야 한다는 것이다.
->>약점: 이 중복 단어 채점기 (word-overlap scorer) 의 약점은 텍스트에 등장하는 단어의 순서를 완전히 무시한다는 것이다.
->> 이것을 보완하기 위해 다른 채점기도 준비했다.
⓵이중 한 채점기는 단서와 근거 텍스트에 등장하는 단어를 차례대로 정렬하고 탐색 알고리즘 으로 두 텍스트에서 일치하는 부분을 찾았다. 일치하는 단어는 높은 점수를 받고, 일치하지 않거나 빠진 단어가 있으면 낮은 점수를 받았다. ⓶또 다른 채점기인 단어 정렬 채점기 (alignment scorer) 는 흔한 단어 보다 희소한 단어에 더 높은 점수를 주었다. ⓷IBM 연구원들이 추가한 또 하나의 채점기는 성별 채점기 (gender scorer) 였다. ⓸또 다른 채점기는 근거 텍스트의 파스 트리로 단서의 파스 트리를 직접 정렬하려고 시도하기도 했다. 두 개의 파스 트리를 정렬했을 때 초점이 답변 후보와 일치하면 이 답변 후보는 정답일 가능성이 크다고 판단했다. 왓슨이 사용하는 채점기의 목록은 점점 길어져서 총 100개가 넘었다. 연구원이 기존 채점기의 단점을 발견하고 새로운 수학 함수를 고안하면, 이를 채점기로 만들어 왓슨의 성능이 개선되는지를 테스트한 후 이를 왓슨에 추가하는 일이 반복되었다. 왓슨은 답변 후보에 모두 점수를 매길 때에도 아직 어느 답변 후보가 정답에 가장 가까운지 판단을 내리지 않은 상태였다. 이 시점에서 왓슨은 답변 후보의 근거 각각에 대한 수치화된 점수 목록을 갖고 있을 뿐이다. 왓슨은 최종 단계인 집계와 순위 결정 (aggregation and ranking) 단계에서 최종 판단을 내렸다.
왓슨은 분류기를 사용했지만, 먼저 점수를 매긴 스프레드시트를 적절한 형식의 데이터로 변환해야만 했다. 각 답변 후보의 근거를 평가하기 위해 스프레드시트를 만들었을 때, 어떤 답변 후보는 아주 많은 근거 텍스트 가 있을 수 있고, 반면에 근거 텍스트가 적거나 거의 없는 텍스트 답변 후보도 있을 수 있다. 그 밖에 중복된 정답이 존재할 가능성도 있는 등 여러 측면에서 답변 후보 목록은 다루기 어려운 데이터였다. 문제를 해결하기 위해 왓슨은 최종 답을 구하기 전에 각각 다른 분류기를 사용하는 일곱 개의 레이어로 데이터를 처리했다. [오른쪽 그림]에서 이 레이어의 대략적인 모습을 볼 수 있다.
(▲ 그림 13-2 왓슨이 실행하는 DeepQA 프레임워크의 집계와 순위 결정 단계 이 단계는 일곱 개의 레이어로 구성되는데 각 레이어는 병합, 변환과 필터, 선형 분류기(문제 유형별로 다른 분류기를 사용한다) 작업으로 이루어진다. 일곱 개의 레이어 각각은 고유의 병합, 변환, 분류 작업을 수행하고(몇몇 레이어에서는 일부 생략할 수도 있다), 프레임워크는 레이어별로 작업하는 데필요한 기능을 제공한다.)
어떤 레이어는 중복된 정답을 합치는 작업을 수행한다. 왓슨이 부딪힌 또 다른 문제는 답변 후보로부터 각각의 채점기가 받은 채점 결과의 개수가 서로 다를 수 있다는 것이다. 그러므로 일곱 개의 레이어 중 한 레이어에서는 어떻게든 말이 되는 점수가 되도록 이들 점수를 결합했다. 왓슨은 어떤 채점기의 결과에서는 평균을 계산하고, 다른 채점기의 결과에서는 답변 후보의 근거 중에서 가장 높은 점수를 올린 항목만 가져와서 계산했다. 왓슨의 순위 결정 단계 에서는 이 점수의 단위를 변경하거나 빠진 특성값을 채우는 변환 과정을 거쳤다. 마지막으로 점수가 높은 답변 후보와 낮은 답변 후보를 분리하는 작업에 적합한 분류기는 점수가 가장 높은 답변 후보 중에서 답변 후보를 가려내는 작업에는 적합하지 않을 수도 있다. 그래서 왓슨의 파이프라인에 있는 어떤 레이어에서는 가장 점수가 낮은 답변 후보를 분류기가 걸러낸 후 다른 분류기가 상위 다섯 개의 답변 후보를 고르고, 또 다른 분류기가 그중 가장 점수가 높은 답변 후보를 골랐다. 레이어의 데이터 처리 과정은 파이프라인의 최종 단계에서 단순한 분류기를 적용할 수 있도록 답변 후보의 데이터를 가공하는 작업이다. 달리 말하면, 왓슨은 이렇게 바꾼 데이터를 최종적으로 분류기에 입력한다.
왓슨의 집계와 순위 결정 단계에서 작동하는 이 일곱 개 레이어의 재미있는 점은, 모든 레이어가 동일한 구조로 되어 있다는 것이다. 앞에서 살펴본 것처럼 일곱 개의 레이어는 각자 다른 작업을 수행한다.
하지만 왓슨이 데이터를 각 레이어에 밀어넣는 방식은 모두 동일하 다. 각 레이어는 세 개의 기본 요소로 구성된다. 근거 데이터의 병합(evidence merging) 작업, 이 레이어에 필요한 고유의 작업 (특성을 조작 하거나 답변 후보를 필터링하는 등의) 을 수행하는 처리 (processing) 작업, 다음 단계를 위해 답변 후보의 점수를 다시 매기는 분류 (classification) 작업이다.
나가기
- 왓슨 최적화하기
왓슨은 거대한 시스템이었다. 복잡함 때문에 시스템의 최적화(tuning) 도 느리고 어려웠다. 다행히 왓슨은 내부의 여러 단계를 병렬로 실행하도록 설계되었다. 예를 들어, 왓슨은 각 답변 후보를 개별적으로 하나하나 조사하는 대신, 작업을 여러 CPU에 할당하는 방식으로 여러 답변 후보를 동시에 조사할 수 있었다. 이렇게 병렬 처리를 하고 2,880개에 이르는 CPU에 작업을 분산시킴으로써 페루치의 팀은 왓슨의 정답 시간을 5초 이내로 유지할 수 있었다.이 정도면 러터와 제닝스를 이길 수 있을 만큼 빠른 속도였다
- DeepQA 다시 살펴보기
DeepQA는 데이터 처리 엔진이며 왓슨은 DeepQA 위에 구현된 프로그램이다. 왓슨이 첫 번째로 하는 일은 사람이 만든 다양한 규칙을 기반에 두고 단서를 분석하는 것이다. 이 과정에서 문장 구조도가 생성되며, 수작업으로 만든 규칙으로 나중에 문제의 답을 구할 때 사용할 정보의 조각을 추출한다. 그런 다음 왓슨은 이 정보 조각을 사용하여 검색 엔진에서 답변 후보를 검색한다. 그러면 답변 후보의 목록이 만들어지고 이 답변 후보를 필터링하여 수를 줄인 후 각 답변 후보가 정답일 가능성을 뒷받침하는 근거 정보를 검색한다. 이렇게 수집한 근거 정보에 점수를 매기고, 마지막으로 일련의 변환과 분류 과정을 거쳐 정답에 가장 근접한 답변 후보를 선택한다.
- 왓슨에게 지성이 있을까?
왓슨이 <제퍼디!>에서 시합을 얼마나 잘하는지와 상관없이 왓슨의 원래 버전은 특정한 작업 한 가지만 수행하도록 설계되었다. 넷플릭스 프라이즈에서 수상하는 데만 몰두했던 실용이론 팀처럼 왓슨 팀은 <제퍼디!>에서 시합을 할 수 있는 시스템을 구축하는 것에만 집중했다. 그리하여 왓슨 (최소한 초기 버전의 왓슨) 은 프로그램을 개조하지 않는 한 <제퍼디!>에서 시합하는 것 말고 다른 일은 할 수 없었다. 그러나 IBM은 왓슨을 다양하게 응용할 수 있다고 광고했다. 다른 분야에 쓰인 이런 왓슨의 응용 프로그램은 원래의 왓슨과는 매우 다르게 구현되어서 이들 응용 프로그램의 성능을 평가하기는 매우 어려웠다.사실 왓슨 브랜드는 <제퍼디!> 이후 실망스러운 평가를 받곤 했다. 그래도 왓슨이 최초로 주목을 받았을 때 IBM은 왓슨이 어떻게 작동하는지를 공개했고, 이 연구는 주류 자연어 처리 커뮤니티에 받아 들여졌다. <제피디!>에서 시합하는 왓슨의 기능이 존경받을 만한 공학적 성취로 널리 받아들여진 것은 의심할 여지가 없으며, IBM은 왓슨을 만들어서 이 자연어 처리 관련 시스템의 기준을 높였다.
주석
- ↑ 파이프라인(pipeline): 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결"
DeepMind의 AlphaGo
요구사항
DeepMind의 AlphaGo에 대한 내용 및 그와 관련해 다루어진 인공지능 기술의 맥락이 무엇인지에 대해 서술할 것. 〔숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱, 2019, 323-384쪽.〕을 기본 원고로 하여 기초 정보를 정리하되, 웹에서 추가적인 정보(텍스트, 이미지, 동영상 등)를 찾아서 보완할 것. |
과제원고 : 길혜빈, 윤석만, 임예찬
알파고의 정의
알파고(Alphago)는 구글의 딥마인드가 개발한 인공지능(AI) 바둑 프로그램이다. 정책망과 가치망이라는 두 가지 신경망을 통해 결정을 내리며 머신러닝을 통해 스스로 학습하는 기능을 가지고 있다.
알파고의 등장 배경
알파고를 개발하기 전에 딥마인드에서는 ‘스페이스 인베이더’[1]를 하는 프로그램을 개발했었다. 딥마인드가 이 프로그램이 게임을 진행하는 영상을 구글에게 처음 선보였을 때 회의실에서는 환호성이 터져나왔다고 한다. 자율 주행차까지도 만들 수 있는 이들이 그렇게 흥분한 이유는 이 프로그램이 인간의 개입 없이 프로그램 스스로 게임하는 방법을 배웠기 때문이다. 딥마인드는 이러한 강화 학습(reinforcement learnint)[2] 방식을 통해서 ‘알파고’까지 개발하게 된다.
알파고의 원리
1인용 게임 스도쿠와 같이 불확실성이나 임의성이 배제된 게임은 <그림 1>과 같이 탐색 알고리즘 [3]을 사용하여 결과를 얻어낼 수 있다. 이러한 탐색 알고리즘은 똑똑한 의사결정을 내릴 필요가 없다. 알고리즘은 단지 트리를 일정한 방식으로 순회(차례로 방문)하기만 하면 되기 때문이다. 이 알고리즘이 얼마나 정확하게 여러 상태를 탐색할 수 있는지는 전적으로 프로그래머에게 달려있으며, 컴퓨터는 모든 경우의 수를 체계적으로 확인할 수는 있지만, 어떤 특정한 상태를 택할 수 있는 재량권은 없다. 컴퓨터는 모든 상태를 탐색하면 이미 정해진 알고리즘을 따라서 작동할 뿐이다.
혼자하는 게임은 탐색 경로와 플레이어가 취할 수 있는 행동이 처음부터 끝까지 정해져있어 게임의 불확실성이 없기 때문에 탐색(알고리즘)만 하면 된다. 그러나, 플레이어가 한 명 이상일 때는 게임에 불확실성이 추가되어 탐색 알고리즘에 행동을 예측하고 다음 행동을 선택하는 프로그램을 추가하게 된다. 예를들어 ‘바둑’과 같은 게임의 경우 ‘탐색 알고리즘’만을 사용하는 방식을 선택하면 그 경우의 수가 우주의 원자 수보다 많아져 거의 불가능에 가까워진다.
알파고는 대국에서 수를 둘 때마다 현재의 바둑판 상태로부터 수많은 가상 대국을 만들어낸다. 알파고는 메모리에 생성된 가상 대국을 마주하면서 이 대국이 끝날 때까지 검색 트리에서 하나의 경로를 계속 파고든다. 대국이 끝나면 승패를 알게 된다. 알파고는 이것을 수천 번 반복하여 어떤 수를 둬야 하는지 직관을 깨우치는 것이다.
대국을 시뮬레이션해야 할 때마다 알파고는 바둑판에 가상의 돌을 놓아가며 대국을 예측했다. 가상 대국이 펼쳐지는 동안 알파고는 신경망을 사용해 바둑판에 놓인 가상의 돌로 다음 수를 결정했다.
이 신경망을 일단 알파고의 ‘수 예측 신경망’이라고 하자. 이 신경망은 바둑의 전략적인 특성이 들어있었다. 알파고의 수 예측 신경망은 플레이어가 할 수 있는 행동의 모든 경우의 수에 대한 확률 분포를 생성한다. 그리고 알파고는 이 신경망의 출력을 가중치 주사위를 사용해 다음 수를 선택한다. 딥마인드는 사람이 둔 3,000만 개의 수를 인터넷의 바둑 서버에서 다운 받아 알파고의 수 예측 신경망을 학습시켰다. 알파고는 57%의 정확도로 플레이어의 수를 예측했지만, 여전히 불확실성을 가지고 있었다. 이에 딥마인드는 바둑 기사의 수를 더 많이 샘플링하면 정확도가 높아질 것으로 생각했다. 그러나 그러기엔 시간이 너무 걸렸다. 알파고는 수 예측 신경망의 속도와 정확성의 한계를 넘어서기 위해 알고리즘의 변형된 버전을 사용해야 했다.
그 결과 딥마인드가 사용한 알고리즘 버전은 몬테카를로 트리 탐색 알고리즘(Monte Carlo Tree Search, MCTS)이었다. 이 알고리즘은 모종의 의사 결정을 위한 체험적 탐색 알고리즘으로, 특히 게임을 할 때에 주로 적용된다. 선두적 예로 컴퓨터 바둑 프로그램이 있으나, 다른 보드 게임, 실시간 비디오 게임, 포커와 같은 비결정적 게임에도 사용되어 왔다. 몬테카를로 트리 탐색의 매 회는 선택, 확장, 시뮬레이션, 역전달의 과정으로 구성되는데, 여기에는 2가지 방법이 사용된다. 그 방법은 다음과 같다.
1. 정책망(Policy Network)
바둑판의 현재 상황을 입력하면 다음 수의 위치를 계산해서 알려주는 것이다. 예를 들어 여러가지 경우의 수가 있을 때 '이런 수는 사람이 두지 않는다'고 판단되는 모델이 있다면 그 경우는 탐색 후보군에서 미리 제외함으로써 알고리즘이 탐색할 범위를 좁혀준다. 다음 2가지 방법을 통해서 다음 수의 위치를 예측할 수 있다.
(1) 프로 바둑기사 따라하기(=SL policy)
딥러닝을 하는 것이다. 딥마인드는 바둑 기사가 둔 기보 16만개와 착점 3,000만 개의 수로 알파고의 신경망을 학습시켰다. 신경망은 3억 4천만번 업데이트되었고, 그 결과 57%의 정확도로 수 예측을 할 수 있었다.
(2) 스스로 발전하기(=RL policy)
알파고 vs 알파고의 대결을 통해서 스스로 게임 전략을 학습하는 것이다. 알파고는 스스로 학습하면서 더 많은 양질의 데이터를 생성하고 이를 바탕으로 프로그램을 향상시킨다.
2. 가치망(Value Network)
바둑판의 현재 상황을 입력(input)하면 승률이 가장 높은 수를 알려주는 것이다. 즉, 형세를 판단해서 이길 확률을 알려주는 것이다. 이 방법을 쓰면 확률이 낮은 경로는 끝까지 시뮬레이션 할 필요가 없기 때문에 경우의 수를 줄일 수 있다.
알파고의 역사
- 하드웨어
- 2015년형 알파고: 단일 컴퓨터로 구동되는 ‘단일 버전’ 및 여러 대의 컴퓨터를 사용하는 ‘분산 버전’ 2가지가 있다.
- 알파고 판 (AlphaGo Fan): 2015년 판 후이 2단과의 경기에서 승리했다.
- 알파고 리 (AlphaGo Lee): 알파고 판에서 기계학습이 개선된 수준의 버전이다.
- 알파고 마스터 (AlphaGo Master): 2017년 초 프로 바둑 기사와 온라인 대국에서 60연승을 하였고, 같은 해 5월 커제 9단과의 대결에서도 승리하였다. 기존의 알파고가 학습한 내용을 토대로 추론했다면 알파고 마스터는 추론과 동시에 학습할 수 있고, 학습에 필요한 시간이 기존의 3분의 1로 단축되었다.
- 알파고 제로 (AlphaGo Zero): 알파고의 최종 버전이다. 알파고 제로는 인간의 기보에 의존하는 지도학습 없이 바둑 규칙만으로 스스로 학습하며 기력을 향상시킨다. 알파고 제로는 2900만 번의 자가 대국을 진행하며 학습하였다. 빅데이터 학습이 필요 없는 인공지능의 등장은 바둑과 달리 빅데이터 확보가 어려워 인공지능을 활용하기 어려웠던 분야에 해결책을 제시했다는 점에서 의미가 있다
- 알파 제로 (Alpha Zero): 하나의 알고리즘으로 바둑, 체스, 쇼기 등의 보드게임에 적용되는 범용 인공지능이다. 알파고 제로와 마찬가지로 빅데이터 학습이 필요 없을 뿐만 아니라, 점점 강해지는 자신과의 게임을 반복하면서 스스로 빅데이터를 구축한다.
- 이세돌 9단과의 대국
시기: 2016년 3월
방식: 구글의 연구개발자이자 아마추어 6단인 아자 황(Aja Hwang) 박사가 알파고를 대신하여 바둑판에 돌을 놓고, 이세돌 9단이 착점한 수를 컴퓨터에 입력하는 방식으로 진행되었다.
결과: 알파고 4승 1패
인터뷰:
마치며
이세돌과 알파고의 경기에서 연이어 기계에 지는 모습을 보면서 사람들은 적잖이 충격을 받았었다. 그때 어떤 시인이 인터넷상에 올렸던 말이 기억이 난다.
그러나, 이제 기계는 바둑을 넘어 다양한 분야에서도 스스로 학습할 수 있는 능력을 갖추게 되었다. 알파고를 개발한 딥마인드는 “현실 세계의 문제를 푸는 인공지능을 만들고, 아무도 깨부수지 못한 새로운 분야에 인공지능을 적용하는 것이 최종 목표”라고 밝혔다. 이제는 기술의 ‘한계’만을 논하기보다 사람이 ‘기계’에게 어디까지 권한을 주어야 하는지 더욱 고민해 볼 필요가 있다는 생각이 든다.
참고문헌
숀 게리시 지음/이수겸 옮김, 『기계는 어떻게 생각하는가』, 이지스퍼블리싱.
주석
- ↑ 화면 하단의 우주선을 움직이면서 외계인이 화면 하단에 닿기 전에 쏴서 맞추는 게임이다.
- ↑ 경험을 통해 학습할 수 있는 능력을 컴퓨터 프로그램에게 부여하는 방법을 연구하는 인공 지능의 한 분야이다. 게임을 할 때 강화 학습의 역할은 미래에 보상받을 수 있는 상태로 프로그램을 이끌어 가기 위해 프로그램에게 어떤 행동이 그러한 상태로 이동할 수 있게 해주는지를 계속 알려주는 것이다.
- ↑ 방대한 데이터에서 목적에 맞는 데이터를 찾아내기 위한 알고리즘이다. 일반적으로 탐색 알고리즘이라고 하면 트리 검색 알고리즘을 떠올리는 경우가 많으나, 탐색 알고리즘의 이론적인 정의는 보다 다양한 범위를 포함한다.
- ↑ 이세돌의 명언을 찾아보면 '자신이 없어요 질 자신이', '수가 보이는데 어쩌냐' 등의 자신감 넘치는 말들을 많이 볼 수 있다. 그런 그가 알파고와의 대결 후에 위와 같은 인터뷰를 한 것을 보면 엄청난 좌절감을 느낀 것 같다.