[AI Book Review #6] 기계는 어떻게 생각하는가(2018)

숀 게리시 지음
[AI Book Review #6] 기계는 어떻게 생각하는가(2018)

알파고부터 자율 주행차까지! 기계 학습 구현 사례와 동작 원리.

지은이, 숀 게리시(Sean Gerrish)

  • 프린스턴 기계 학습 분야 박사 학위, 2019년 구글에서 소프트웨어 엔지니어로 근무

이 책에서 다루는 내용

  • 컴퓨터가 세계를 인식하고 상호 작용할 수 있도록 해준 몇가지 핵심 아이디어
  • 영화 추천 엔진
  • 컴퓨터에게 보상을 걸고 특정한 해동을 하도록 학습시키는 방법과 컴퓨터가 인공 신경망으로 실세계를 인식하는 방법
  • 컴퓨터가 어떻게 게임을 하는가

총평

  • 교양서적에 가깝지만 디테일한 기술적 내용이 꽤 잘 서술되어 있음.
  • 일반인이 이해 할 수준의 쉬운 설명/예시가 장점이다.
  • 전공자가 볼 때는 크게 기술적으로 얻을 부분은 없음.
  • 가끔 전문 용어가 좀 낯설게 적힌 것들이 있는데, 가령 Activation Function을 Squashing Function으로 표현한다든가 하는 것들이 좀 있음.

요약

01. 자동인형의 비밀

  • 이 책은 18세기에 등장한 자동 인형의 소개에서 글을 시작한다.
  • 18세기 보캉송의 플루토 인형, 그리고 그 후 제퍼디, 알파고 등으로 이어지는 인간의 ‘오토마타‘를 향한 호기심은 꾸준히 지속되어 왔다.
  • 오토마타는 자율적으로 움직이는 기계일 뿐, 프로그램에 따라 움직이며 스스로 생각하는 것은 아니다.
  • 18세기의 오토마타는 당시로서는 최첨단 정밀 기술인 ‘기계식 태엽 장치’를 사용해서 조정.
  • 괘종시계는 진자 운동을 이용해서 시간을 맞추는데, 진자가 한 번 움직이면 일련의 빗장과 톱니바퀴가 시, 분, 초의 흐름을 기록한 후 저장된 에너지를 약간씩 방출해서 진자를 한 번 더 움직여 이 과정이 계속 되도록 함. 그리고 이런 에너지를 이용해서 단계적으로 프로그래밍을 실행함.
  • 현대식 컴퓨터도 ‘전자’를 사용해서 유사하게 작동한다고 볼 수 있다.
  • 보캉송의 오토마타와 달리 오늘날의 오토마타는 인지 능력을 갖추고 있어 외부 환경에 대응이 가능하다.

인공지능과 기계 학습은 무엇인가?

  • 인공 지능‘은 컴퓨터에 지능적인 일을 수행시키는 방법을 연구하는 방대한 학문분야이다. 하지만, 사람과는 매우 다른 방식으로 일을 처리한다.
  • 기계 학습은‘은 데이터를 통해 학습한 내용을 바탕으로 컴퓨터가 영리하게 일을 처리할 수 있도록 하는 방법을 연구하는 분야이다.
    • 맞는 정의이지만, 초심자가 볼 때는 전혀 도움이 되지 않는 정의이다. 이런 정의에서 등장하는 '학습'이라든가 일을 처리 한다든가 하는 마치 인공지능을 하나의 주체로 여기지도록 헷갈리게 만든다. 만약에 인공지능을 칼과 개/고양이 중 어느 것과 더 가깝냐고 물어본다면 오히려 '칼'에 가깝게 분류가 되어야 한다고 생각한다. 즉, 도구라는 것이다.

02. 자율 주행차와 인공지능

  • 2004년 최초로 시작된 자율 주행차 대회, DARPA 챌린지
  • 스탠퍼드 레이싱 팀의 ‘스탠리’에 적용된 기계 학습 알고리즘
    • 일단 사람이 운전하도록 하고, 사람이 운전한 지형은 안전한 지형, 나머지는 안전하지 않은 지형으로 레이블링
    • 이렇게 모인 데이터로 Supervised Classification으로 학습함
    • 이렇게 학습된 알고리즘은 실수할 확률이 1/6000로 줄어듦.
    • 또한, 클러스터링 기법을 사용해 도로와 도로가 아닌 부분을 구분함

03. 넷플릭스 프라이즈와 인공 지능

  • 2006년, 넷플릭스 그랜드 프라이즈 개최, 최고의 영화 추천 알고리즘에게 상금 100만 달러
  • 아직 이때는 스트리밍 서비스는 존재하지도 않았고 DVD 대여 서비스를 운영중이었음.
  • 1998년부터 2005년까지 수집된 1억 건의 영화 평가 데이터(1~5점 사이 별점) 제공
  • 대회가 시작되고 일주일 만에 넷플릭스의 알고리즘보다 성능을 1% 향상시킨 팀이 등장, 일 년동안 20,000개 팀 참가

거대한 평점 행렬

  • 이 문제는 거대한 평점 행렬로 바라봐야한다.
  • 17,700개의 영화와 사용자 480,189명이 매긴 평점 매트릭스. 단, 이 행렬이 채워진 부분은 1%에 불과함
  • 벨코 팀의 전략
    • 1) E.T 효과: 영화에만 적용, 사용자에 관계 없이 영화가 얼마나 재밌었는지만 계산
    • 2) 스크루지 효과: 사용자에게 적용, 사용자가 얼마나 점수를 박하게 주는지, 후하게 주는지
    • 위 두가지를 사용해서 기본적인 추천 엔진 만듦.
    • 하지만 위 전략은, 모든 사용자에게 <로스트> 혹은 <심슨 가족>, <반지의 제왕> 등 유명하고 인기 있는 DVD만 추천하게 됨.
    • ‘터미네이터 효과’를 잡아야만 함. 즉, 넷플릭스 사용자 중에는 SF와 액션 영화를 좋아하는 그룹이 있고, 어린이 영화를 좋아하는 그룹이 있는데, 이 두 그룹 모두에 포함되거나 포함되지 않는 사용자도 있는 상황을 고려해야 함
      • 왜 터미네이터 효과라고 부르는거지?
  • 이를 해결하기 위해 행렬 인수 분해를 사용(matrix factorization)
  • 행렬 인수 분해는 거대한 행렬이 중복된 정보를 많이 갖고 있다는 사실을 기반으로 함.
    • image
    • 사용자들이 많지만, 사용자 중에서는 비슷한 성향을 갖는 사람이 많을 것이므로, 그들의 정보는 중복이라고 판단할 수 있을듯. 영화도 마찬가지
  • image
  • 위 알고리즘에 행렬 인수 분해라는 이름이 붙은 이유는, 영화와 사용자에 대한 정보를 나타내는 숫자가 담긴 두 개 이상의 행렬(인수)을 곱해 거대한 평점 행렬과 같은 원시 데이터를 만들어 그 데이터로부터 근사치를 계산하는 방식이기 때문
  • 위 알고리즘을 통해, 사용자 별 선호도 분류기를 만들어 낼 수 있음.
  • 이후 사람들은 행렬 인수 해와 모델 블랜딩을 추가
  • 벨코팀은 107개의 모델을 블렌딩함으로써 좀 더 불확실성이 적은 결과를 예측 가능
  • 모델 블렌딩이 잘 동작하는 경우는 서로 연관성을 갖지 않을 때 잘 작동.
  • 부스팅
    • 참가자들은 부스팅을 평점 예측에 적용하기 위해 영화 평점을 예측하는 아주 간단한 모델을 학습시키는 것부터 시작.
    • 이 모델의 예측은 완벽하지 않을 것이므로 모델이 잘못 예측한 평점 결과를 증폭시킴.
    • 즉, 다른 평점보다 모델이 잘못 예측한 평점에 가중치를 더 줌으로써 분류기가 다음 처리 과정에서는 이 값을 좀 더 신중하게 처리하도록 함.
    • 그런 뒤 가중치가 조정된 모델의 예측이 잘 맞는지를 확인
    • 이 과정을 계혹 반복하여 부정확한 평점을 도드라지게 만들고 새로운 모델을 반복해서 최적화함.
    • 이 과정이 끝날 때까지 수십, 수백, 수천 개의 모델을 쉽게 학습시킬 수 있게 됨.
    • 이런 일련의 과정을 부스팅이라고 함
    • 적절한 가중치를 갖게 된 모델들의 평균을 구하면 결과적으로 어떤 다른 모델보다도 좋은 결과를 보이는 블렌딩 된 모델을 얻을 수 있음.

04. 강화 학습과 심층 신경망

딥마인드, 아타리 게임을 하다

  • 2014년 초, 구글은 딥마인드를 5억 달러가 넘는 비용을 지불하고 인수. 당시 딥마인드의 직원은 50명에 불과
  • 인간의 개입 없이 프로그램 스스로 게임하는 방법을 배워서 아타리 게임(스페이스 인베이더, 브레이크아웃 등)을 플레이
    • 이전에도 자율 주행이나 왓슨이 제퍼디라는 퀴즈쇼에서 인간을 이기고 딥 블루는 체스 세계 챔피언을 이겼으나, 이때는 다 인간의 개입이 있었다.
  • 이 때 Agent에게 입력된 데이터는 단지 화면에 있는 RGB 색상의 픽셀 이미지와 현재 점수 뿐.
    • 교육 자료로 임팩트 있게 써먹기 좋겠는데?
  • 더 인상적인 것은 딥마인드는 동일한 프로그램으로 인간의 개입 없이 49개의 아타리 게임을 대부분 완벽하게 해낼 수 있을 정도로 만들었다는 점.
  • 여기서 활용된 것이 강화학습

강화학습이란?

  • image
  • 강화 학습 기법은 행동에 대한 보상이나 처벌을 통해 학습됨. 프로그램이 보상을 따라가도록 하게 만들면 되는 것.
  • 그러나 강화 학습 에이전트 또한 결정론적(deterministic) 프로그램에 따라 움직일 뿐이다. 위 그림에서는 최근 스크린 샷 네개를 살펴보고 액션을 선택한다.
  • 에이전트 프로그래밍
    • 어떻게 보상을 통해 에이전트를 학습시킬 수 있을까?
    • 첫 번째는 에이전트가 세계 모델(world model, 데이터로 표현된 현실 세계. 에이전트는 이 모델을 통해 현실에서 어떤 일이 일어나는지 인식)을 저장하는 방식과 관련.
    • image
    • 큐브의 각 셀에는 에이전트가 특정 상황에서 특정 행동을 했을 때 이 행동에 대해 기대하는 가치(value)가 저장된다.
    • 에이전트는 다음 행동을 결정할 때에 매번 현재 위치에서 여덟 가지 행동을 했을 때의 결과에 대한 가치들을 찾아보고 가장 가치가 높은 행동을 선택.
    • 각 셀에 정확한 값들이 저장되어 있다면 이 것은 어렵지 않은 일. 그러나 이 값들을 어떻게 알아내는가?
    • 각 셀의 값은 에이전트의 행동에 따라 미래에 얻을 수 있을 것으로 추정되는 보상의 총량을 얻기까지 걸리는 시간에 따라 조정한 가치이다.
  • 딥마인드는 에이전트가 시행착오를 겪으면서 큐브의 값을 알아내는 방법을 사용
  • 처음에는 에이전트가 완전히 무작위 행동을 선택한 후 어떤 일련의 상태-행동이 결과적으로 보상으로 이어지는 경향이 있는지를 경험을 하면서 파악
  • 에이전트는 강화 학습 분야의 정책 분리 학습(off-policy learning)이라는 기법을 사용하여 무작위 해동의 결과에서도 게임의 전략을 알아냄.
  • 그 후 에이전트의 경험이 쌓이면 에이전트는 무작위로 행동을 결정하지 않고 특정한 행동을 고름.
  • image
  • 에이전트가 미래를 예측할 때 고려해야 할 것은 오로지 에이전트의 현재 상태뿐이다. 에이전트의 현재 상태에는 에이전트가 미래를 예측하는데 필요한 이전에 일어난 사건이 모두 반영되어 있다고 가정하기 때문이다. 이를 **마르코프 가정**이라고 한다.

신경망으로 아타리 게임을 정복하다

  • 행동-가치 함수(action-value function), Q 함수: 현재 상태에서 해당 액션에 대한 가치 함수
  • 아타리 게임처럼 큐브에 다 담을 수 없을 만큼 상태가 커지면 Q 함수를 분류기로 활용 가능
    • Q 함수의 형식은 행동-가치 큐브를 충분히 모사할 수 있을 정도로 유연해야 하며, 이는 Q 함수가 다양한 함수를 대변할 수 있어야 한다는 뜻이다.
    • 신경망은 이런 작업에 어울리는 특성을 갖추고 있다. 신경망은 특히 특성을 자동으로 식별해 주기 때문에 50개의 서로 다른 게임에 대해 수작업으로 특성을 찾아내느라 고민할 필요가 없다.
  • 신경망
    • 신경망은 생물학에서 영감을 받아 만들어진 수학 함수로, 상호 작용하는 인공 뉴런으로 구성된다.
    • 신경망의 각 뉴러은 활성 상태에 따라 켜졌다 꺼졌다 하는 작은 전구라고 할 수 있다.
    • 뉴런이 활성화되면 일정 범위의 숫잣값을 가질 수 있으며 희미하게 켜지거나 매우 밝게 빛날 수 있다.
    • 각 뉴런이 켜졌는지 꺼졌는지는 이 뉴런으로부터 다른 뉴런으로 입력되는 뉴런의 밝기와 뉴런 간의 가중치에 달려 있다.
      • 전구 예시가 참 좋네
      • 각 뉴러는 가중 평균 분류기이며, 신경망은 서로 연결된 작은 분류기들의 뭉치라고 할 수 있다.
      • image
      • 신경망은 생물학에서 영감을 얻었지만 생명의 신비함 같은 것과는 거리가 멀며, 일련의 수학식을 계산하는 약간 복잡한 계산기일 뿐이다.
        • 일반인들이 가장 많이 갖는 오류중 하나가 바로 이 인공 신경망에 대한 신비감이다.
      • 뉴런 사이의 연결별 가중치와 뉴런에 대한 입력값을 알고 있는 한 신경망이 출력하는 결괏값에는 어떤 애매함도, 임의성도, 마법도 존재하지 않는다.

인공 신경망이 보는 세상

  • 2016년, 에이미 잉그램(Amy Ingram)이라는 챗봇이 등장, 이 챗봇은 이메일을 보낼 때 에이미를 참조에 넣기만 하면 알아서 미팅 일정을 잡아주는 챗봇이었음. 말투도 유려하고 매너도 좋음.
    • 그러나 알고보니 챗봇이 아니라, 직접 사람이 개입해서 동작하는 챗봇이었음.
    • 18세기 체스두는 터키인(메카니컬 터크)도 마찬가지로 사람이 안에 숨어있는 속임수.
    • 이러한 예시가 주는 교훈은 “그건 신경망이 있으니까 동작하는 거야”와 같은 이이기를그대로 받아들이면 안 된다는 점.
  • 과적합 문제와 해결책
    • 학습 데이터에는 잘 부합하지만 새로운 데이터에는 그렇지 않을 수 있음
    • 오컴의 면도날 이론에 따라 간단한 모델을 만드는 것이 더 나을 수도.
    • 과적합을 피하기 위해선, 좀 더 간단한 모델을 사용하거나 복잡한 모델에 좀 더 많은 데이터를 적용하는 것.
  • 이미지넷 대회
    • 리 페이페이(Li Fei-Fei)
    • 객체의 범주로 쓰일 수 있는 101개의 표제어를 찾아낸 후, 범주별로 구글 이미지 검색을 사용해 최대한 많은 이미지를 찾아내고, 9000개의 이미지 모음을 만듦.
    • 이후 십여년간 이미지넷(ImageNet) 프로젝트에 뛰어 들어, 22000개의 범주로 분류된 1400만여 개의 고화질 이미지를 갖춘 사이트로 성장
    • 2010년 페이페이는 이 데이터로부터 1000여 개의 범주에 포함된 140만 개의 이미지를 선별하여 ‘이미지넷 대규모 시각 인식 대회’를 주최
  • 합성곱 신경망
    • 2012년 패러다임 전환을 이끈 심층 신경망 알렉스넷이 등장
    • image
    • 합성곱 레이어 뒤에 완전 연결 레이어를 두는 패턴은 이미지 인식을 할 때 널리 쓰이는 방법이 되었다.
    • 각 합성곱 레이어는 이전 레이어에서 입력된 이미지로부터 특정한 패턴을 찾기 위한 여러 필터를 갖고 있다.
    • 합성곱 레이어의 출력은 백사장의 지도 묶음(비유 좋은데?)과 같으며 각 필터는 탐색 결과로 지도를 한 장씩 갖게 된다. 만약 조개껍질 필터가 패턴에 맞는 이미지 조각을 발견했다면 그 부분이 밝게 표시될 것이다.
    • 출력 레이어의 뉴런 하나가 특히 밝다면, 합성곱에 입력된 이미지의 해당 위치에 필터의 패턴에 아주 잘 들어 맞는 이미지 조각이 있다는 뜻이다.
    • 보통 첫 번째 레이어에 있는 필터는 작기 때문에 첫 번째 합성곱 레이어에 있는 필터로 복잡한 사물을 인식하는 것은 쉽지 않다.
      • 필터의 크기로 설명하는게 맞으려나. 깊은 레이어에서도 필터가 작을 수 있는데
    • 알렉스넷은 첫 번째 레이어에서 수백 개의 필터를 사용했는데, 이는 다시 말해 수백 개의 감지기를 갖고 있다는 의미가 된다.
    • image
    • 필터별로 찾는 패턴이 다름. 이러한 필터를 보통 경계선 검출기(edge detector)라 부르는데, 필터는 입력된 이미지에서 경계선이나 단순한 패턴으로 찾아내기 때문.
    • 이들은 신경망 내부의 더 깊숙한 곳에 있는 레이어의 경계선 검출기와 결합했을 때 비로소 의미를 갖는다.
    • 알렉스넷의 나머지 네 개의 합성곱 레이어에서는 각자 수백 개 이상의 필터를 갖고 있으며, 연속되는 각 합성곱 레이어는 선행 레이어에 있는 필터를 좀 더 복잡한 패턴(털, 곡선 등)을 만드는 구성 요소로 활용
    • 마지막 완전 연결 레이어는 최종적으로 1000개의 범주에 대응하는 1000개의 뉴런을 가짐
  • 왜 심층 신경망인가?
    • 신경망의 레이어는 굳이 이렇게 깊을 필요가 있을까? 히든 레이어가 한 개인 신경망은 임의의 복잡한 함수를 표현할 수 있어야 하며, 이론적으로 히든 레이어가 단 한 개인 신경망도 이미지넷 대회에서 좋은 결과를 낼 수 있다.
    • 하지만 히든 레이어를 한 개만 사용하는 경우, 이 히든 레이어가 이미지를 검출하는 데 필요한 함수를 표현하려면 얼마나 커질지 알 수 없다는 문제가 있다.
    • 히든 레이어의 크기가 지나치게 커지면(넓어지면) 모델이 그만큼 가중치를 학습해야 하며, 대량의 데이터가 없으면 과적합을 피할 수 없다.
    • 깊은 레이어를 사용하는게 더 적은 뉴런을 사용하게 될 수도 있다.
    • 신경망 연구자들은 합성곱 레이어의 강력함을 분산 표현(distributed representation)을 사용해서 이미지를 처리하기 때문이라고 한다.
    • 합성곱 레이어는 서로 다른 뉴런 간의 구성 요소를 다시 사용한다. 신경망이 120개의 개 품종을 인식할 수 있다면, 처음 몇몇 레이어는 개를 묘사할 때 쓰는 아주 기본적인 특성을 인식할 것이다.
    • 그리고 그 다음 단계 레이어에서는 점점 이러한 기본 요소를 다양한 방법으로 결합하는 데 집중할 것이다.
    • 각 단계에서 이 작업을 반복할수록 각 레이어에서 표현할 수 있는 객체의 수는 기하급수로 늘어난다.
    • 합성곱 레이어를 하나라도 제거하면 신경망 전체의 성능은 떨어졌다.
  • ReLU Activation에 대하여
    • ReLU Activation은 0보다 작은 값이면 0, 큰 값이면 그냥 합을 출력하는데, 그럼으로써 해당 뉴런을 학습에서 임의로 배제할 수 있다.
    • ReLU를 사용하면 기하급수적인 방법으로 이들 뉴런을 억제할 수 있으므로, 실제 학습시킬 수 있는 신경망이 무한정 있는 것과 마찬가지다.
    • ReLU를 쓰면 특정 뉴런을 껐다 켰다 할 수 있으므로 2^뉴런수 만큼의 경우의 수가 생기는데, 뉴런이 60개만 되도 어마어마한 숫자의 경우의 수가 존재한다. 이런 방식 덕분에 각 뉴런의 입력값은 서로 독립해서 학습된 모델들의 평균값이 되며, 사실상 학습이 끝난 수많은 모델을 합친 것처럼 작동한다.

ETC

  • 이후 RNN, LSTM, 게임, 알파고 등에 대한 내용이 담겨 있음.