PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2016/03/25 15:01:20
Name 65C02
Subject [일반] 인공신경망과 알파고 - 알파고는 어떻게 동작하는가?(3)
이번 글은 다음 링크를 참고로 작성되었습니다.
http://sanghyukchun.github.io/75 
http://cs231n.github.io/convolutional-networks


이제 본론으로 들어가서 알파고의 convolutional neural network에 관해 설명 드리겠습니다. 지난번에도 말씀드렸지만, 오래 전에 전공했던 터라 잘못된 부분이 있을 수 있으니 지적 부탁드립니다. 

신호처리, 특히 영상처리(image processing)을 공부해보신 분들은 영상필터라는 용어에 익숙하실 것입니다. 영상필터를 간단히 설명하면 이런 것입니다.

ODDK3eD.jpg
 
위의 그림은 레나 라고 하는, 이미지 처리분야에서 제일 유명한 아가씨의 사진에 필터를 적용한 결과를 보여줍니다. (레나는 유명한 분이고 이분에 대해서 더 설명해드리고 싶지만 다른 이야기이므로 다른 기회에 설명해드리겠습니다. 참고로 전신샷이 더욱 매력적인 분입니다.)

그림에서 보여지듯이, 출력영상의 각각의 픽셀값은 입력영상에서 대응되는 픽셀 위치 주변에 kernel이라는 필터를 적용하여 계산한 값이 됩니다. 즉 output image에서 동그라미가 쳐진 4라는 값은 input image에서 동그라미가 쳐진 2라는 픽셀값과 그 주위 픽셀값 8개에 대하여 다음 연산을 통해 나온 값입니다. (input image에서 화살표에 가려진 픽셀의 숫자는 2입니다)

1/9 * 2 + 1/9 * 2 + 1/9 * 4 + 
1/9 * 2 + 1/9 * 2 + 1/9 * 5 + 
1/9 * 5 + 1/9 * 5 + 1/9 * 5 = 4

다 쓰고 나니 위의 이미지에도 같은 수식이 있어서 기분이 상했네요. 어쨌든 이 필터는 특정 위치의 출력픽셀 값을 대응하는 위치의 입력픽셀 값 및 그 주변 8개의 값들의 평균값으로 만듭니다. 이는 마치 포토샵의 블러(blur) 효과처럼 영상이 흐릿해진 효과를 냅니다. 영상 처리 필터는 이외에도 여러 가지가 있습니다. 

rSqp0ts.jpg
위와 같이 어떤 kernel(필터)를 택하느냐에 따라서 입력영상에 대한 여러 가지 출력영상이 나올 수 있으며, 이런 처리를 함으로써 입력영상의 특징을 더 잘 포착하거나, 입력영상에 대한 잡음을 제거하는 것이 가능합니다.

인공 신경망을 이용하여 영상인식을 하고자 할 때 어떤 영상필터를 사용하여 특징을 잡아내는 것이 좋을까요? 어떤 영상필터가 가장 효과적일지 결정하는 것은 쉬운 문제가 아닐 것입니다. 그렇다면 차라리 인공 신경망이 어떤 필터를 사용할지 결정하도록 하는게 하는 것은 어떨까요. 이것이 바로 convolutional neural network의 아이디어입니다. 

ClPk3vX.jpg
위의 그림에서는 지금까지와는 방향이 반대로 x가 입력단, s가 출력단입니다. 오른쪽 신경망에서 모든 입력단계의 노드들이 출력단계의 노드들과 연결되어 있는 것에 비해, 왼쪽 신경망에서는 각각의 출력노드들이 특정 입력노드들 하고만 연결되어 있는 것을 볼 수 있습니다. 즉 s1은 x1, x2와, s2는 x1, x2, x3와, s3는 x2, x3, x4와, s5는 x4, x5와 연결되어 있습니다. 각각의 출력 노드들은 대응되는 입력노드 및 주변 2개 노드들의 값을 이용하여 계산되는 것입니다. 단, s1와 s5는 가장자리이므로 두 개의 입력값을 갖습니다. 그리고 각각의 연결선에서의 계수값들은 아래와 같이 서로 연관되어 있습니다. 

x1과 s2사이 계수 = x2와 s3사이 계수 = x3와 s4사이 계수 = x4와 s5사이 계수
x2와 s2사이 계수 = x3와 s3사이 계수 = x4와 s4사이 계수 = x5와 x5사이 계수
x2와 s1사이 계수 = x3와 s2사이 계수 = x4와 s3사이 계수 = x5와 s4사이 계수

MbZqbDZ.jpg

이와 같은 상황을 일반화해서 그려보면 위의 그림이 나옵니다. 위의 그림에서 색이 같은 선은 같은 계수값을 가지는 연결을 의미합니다. 이렇게 각 노드 사이의 연결이 제한되어 있고, 또 연결들끼리 계수값을 공유하게 되어있는 특징을 sparse weight, tied weight 라고 합니다. 이는 convolutional neural network의 중요한 요소들이며 complexity를 줄여서 overfitting을 방지하는 역할을 합니다.

이렇게 만들어진 인공신경망을 잘 음미해보면, 영상신호에 필터를 적용하는 것과 크게 다르지 않음을 알 수 있습니다. 아래의 그림은 영상인식에 이러한 구조를 적용한 것을 보여줍니다.

ebHCf8p.jpg
 먼저 Y채널(밝기정보) 추출, contrast normalization된 32x32 이미지가 5x5 필터 8개(필터값들이 숫자 대신 밝기값으로 표현되어 있습니다.)에 의해 8개의 특징 이미지를 형성하는 것을 볼 수 있습니다. 자세히 보면 필터를 거치고 난 이미지, 즉 인공 신경망의 두번째 layer의 노드값에서도 원래 이미지의 특징들을 엿볼 수 있습니다. 물론 저 필터들은 인공신경망의 계수값들로, training에 의해 자동으로 생성되었을 것입니다.


M3qjMtc.jpg
자, 이제 드디어 알파고의 convolutional neural network 구조입니다. 논문에서는 19x19개(바둑판의 착수점 개수)의 바이너리 정보를 하나의 plane이라고 표현하는데, 입력층은 이러한 plane 48개로 구성됩니다. 왜 48개인지는 지난번에 설명 드린 표를 다시 한번 보는 것이 이해가 빠를 것입니다. 

vJrupVD.jpg
 
이러한 19x19 바이너리 plane 48개에 5x5 필터를 적용하여 두 번째 layer가 생성됩니다. 이때 두 번째 layer의 plane 수는 192개로 늘어나는데, 이는 아마도 입력 plane 하나당 4개, 총 192개의 필터를 적용한 것으로 생각됩니다. (48*4 = 192) (참고로 논문에서 필터의 수를 128, 192, 256, 384개로 테스트해 보았을 때 192개인 경우가 가장 성능이 좋았다고 합니다. 128처럼 48의 배수가 아닌 경우는 어떻게 했는지 잘 모르겠네요. 중요하다고 생각되는 plane과 그렇지 않은 plane을 필터 개수에서 차별을 두는 식이 아니었을까 합니다.) 그 다음 layer 부터는 3x3 필터를 적용하여 해당 layer 다음 layer의 노드들을 형성하게 됩니다. 당연히 이러한 필터들은 training에 의해 구해진 인공신경망 계수값들로 구성되어 있습니다. 정책망의 마지막 layer에서는 1x1 필터 한 개와 활성함수를 거쳐서 착수점 전체에 대한 확률분포가 출력되고, 가치망에서는 fully-connected된 256개의 노드를 거치고 활성함수를 지나서 하나의 값이 나오게 됩니다. 사실 정책망의 마지막 layer는 어떤 구조인지 잘 모르겠습니다. 그 전 layer에서 19x19 plane이 192개 존재할텐데, 여기에 1x1 필터 한 개를 적용해서 19x19 plane 1개가 나오는 상황이 잘 이해가 안가네요. 혹시 이해하신 분 있으면 설명 부탁드립니다.

ZRHVxwD.jpg
위의 그림은 출력단의 특정 위치의 값이 그 전 단계의 어느 노드들에 의해 정해지는지를 시각적으로 보여줍니다. 12번째 layer의 가장 좌측 최상단 모서리 자리를 편의상 (1,1)이라고 부를 때, (1,1)의 값은 11번째 layer의 (1,1), (1,2), (2,1), (2,2) 노드값에 필터를 적용하여 결정됩니다. 3x3 필터가 적용되므로 그 전 layer의 노드값 9개로 구성되어야 하지만, 모서리 자리이므로 부족한 부분은 0으로 설정되어 계산됩니다. (zero padding) 11번째 layer의 (2,2) 위치의 값은 10번째 layer의 (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3) 위치의 노드값에 필터를 적용하여 결정됩니다. 이렇게 반복하여 입력단까지 가 보면, 가장 좌측 최상단 위치에 돌을 놓을 확률에 대한 계산은 입력단에서 좌측 상단 13x13 영역의 정보에 의해 결정됨을 알 수 있습니다. 반대로 입력단의 가장 좌측 최상단 위치의 정보가 출력단에서 얼마나 많은 영역의 확률에 영향을 미치는지도 그려보면 좌측 상단 13x13 영역임을 알 수 있습니다. 또한 바둑판의 중앙 부위는 필터에 의해 상하좌우로 영향이 확장되어 가므로, 중앙 부위 입력단은 출력 전체에 영향을 주고 중앙 부위 출력단은 입력 전체에서 영향을 받을 것으로 생각됩니다.

알파고의 convolutional neural network 설명은 여기까지입니다. 다음 글에서는 알파고가 사고한다고 간주할 수 있는지, 제가 느낀 바를 정리해보도록 하겠습니다. –꼐속


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
16/03/25 15:55
수정 아이콘
원래 convolution filter는 전단계 layer의 모든 plane 으로부터 입력을 받습니다. 예를 들어 전단계 plane 수가 192이고, kernel size가 3*3 이라면 3*3*192의 입력을 받습니다.

따라서 1*1 convolution은 192개의 plane으로부터 각각 하나씩 192개를 입력으로 받는다고 생각하면 됩니다.
16/03/26 08:15
수정 아이콘
저는 CNN 을 실제 구현해본적은 없어서 오류 가능성이 있음을 가만하고 봐주세요;;;
48x19x19 -> 192x19x19 연결되는 부분에 대해서 제가 이해한 방식은요...
19x19 에서 zero pad 를 붙여서 23x23 을 만든 다음에 5x5 필터를 붙이면 다시 19x19 가 됩니다.
따라서 48x19x19 -> 19x19 로 연결시키고 이런 5x5 필터를 192 개 적용시켜서 192x19x19 가 되는듯 합니다.
16/03/26 12:00
수정 아이콘
Solrefa, jjune 두 분이 말씀하신게 혹시 이런 상황인지 확인 부탁드립니다. http://i.imgur.com/7xWSABt.jpg 입력단계에서 5x5 필터 192개에 의해 192개의 plane이 생성되는 그림입니다. 입력단에 색칠된 노드들은 출력단에 색칠된 노드를 계산하는데 사용되는 노드들이고, 그림에서 같은 색의 화살표는 같은 필터임을 의미합니다.

사실 저런 구조가 아닐까 생각도 했는데 이질적인 정보를 가진 각각의 입력단계 plane들에게 같은 필터를 적용한다는 것이 좀 받아들이기가 힘들더군요. 아마도 두 분 말씀이 맞는 것으로 생각됩니다.
16/03/26 23:34
수정 아이콘
이질적인 정보를 가진 plane들에 같은 필터를 적용하는 것은 아닙니다.
convolution 필터는 단순히 2차원상에서 적용되는 것이 아니라 전 단계의 plane들을 쌓아놓은 3차원 스택 전체에 적용되는 것입니다.

쉽게 말하자면, 하나의 convolution filter는 입력 plane별로 따로 2차원 filter를 배운다고 할 수 있겠네요
16/03/27 10:02
수정 아이콘
필터를 쉐어링(?)하는지 여부를 말씀하신거였군요;;;;
Solrefa 말씀을 본 케이스에 맞춰서 쓰면...
5x5_48 필터가 192 개 있다고 하는게 정확한 표현일듯 합니다..
동네형
16/03/25 16:34
수정 아이콘
이과가 또...
트루키
16/03/25 16:39
수정 아이콘
다음편이 정리라면, 마지막일 수도 있는 겁니까? 안됩니다... Deep Q Network 로 게임 학습하는 것도 원리 강의 부탁드립니다!! 흐흐..
16/03/25 16:48
수정 아이콘
기다렸습니다. 선추천 후 감상하겠습니다.
16/03/25 20:36
수정 아이콘
16/03/25 21:10
수정 아이콘
이거 재밌네요. 흐흐
16/03/26 07:09
수정 아이콘
레나 이야기 어디서 봤는데 뭐였더라 했는데 이거였어요 크크
이 분 만화 꿀잼입니다 아직 몇 편 없으니 다 보시는걸 추천해요
16/03/25 20:59
수정 아이콘
알파고는 전기로 동작... =3
16/03/25 21:18
수정 아이콘
마무리 되면 몰아서 읽겠습니다 (...)
16/03/26 00:43
수정 아이콘
이미지 인식하는 필터가 바둑 판세 판별할때도 유효하다는건 신기한 일이네요 그러고 보면 반대로 해석하면, 인간의 판세 직관력이라는것도 그냥 무의식에 숨겨진 신기루 기억을 끄집어 내는것에 불과한 것이군요.
어쨌든 cnn에서 왜 컨벌루션이 피처를 잡아내는지 몰랐는데 이 글 덕분에 알아갑니다 이미지하시던 분들은 그건 그냥 그래라고만 하고 넘어가더라구요
결론적으로 보면 딥러닝모델과 컨벌루션 피처 추출 모델로 인간의 시각적 직관을 흉내낼수 있는 숨은 함수를 찾는 거네요 물론 cpu없이 그걸 처리하는 인간의 뇌도 대단하구요
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
69584 [일반] 주관적으로 선정한 월별 올해의 인물 목록입니다. [16] Fim6337 16/12/23 6337 11
68771 [일반] 인공지능이 변화시키고 있는 우리 사회 [36] imemyminmdsad8114 16/11/19 8114 0
68635 [일반] 민주당, ‘박근혜 대통령 퇴진’ 당론 채택 [125] ZeroOne12340 16/11/14 12340 2
68132 [일반] 이쯤에서 돌아보는 2016년 뉴스들 [34] 감사합니다7403 16/10/25 7403 3
67411 [일반] 안녕하세요 가입인사 드립니다 [33] 보들보들해요4273 16/09/04 4273 11
67058 [일반] [스압] 산업구조 변화로 인한 평등주의의 종말과 그 이후3 [17] cienbuss12741 16/08/17 12741 19
67004 [일반] [스압] 산업구조 변화로 인한 평등주의의 종말과 그 이후 [18] cienbuss13845 16/08/15 13845 38
66097 [일반] 알파고와 사법부의 재판중 국민들은 어느 쪽을 더 신뢰하겠나? [22] 어강됴리7461 16/07/02 7461 23
65914 [일반] 이유는 없어, 그냥 좋아! [62] 마스터충달8178 16/06/23 8178 18
65386 [일반] (약스포) 영화 엑스 마키나(Ex Machina) 짧은 토막글리뷰 [17] 이진아6449 16/05/25 6449 1
65260 [일반] [바둑] 이세돌 프로기사회 탈퇴 [74] Dow17370 16/05/19 17370 10
64889 [일반] 암울해 보이는 우리 경제상황 [124] ohmylove14487 16/04/28 14487 6
64530 [일반] 토요일 오전의 소소한 일상. [7] 라덱5386 16/04/09 5386 17
64470 [일반] 스포) 배트맨 V 슈퍼맨 보고 왔습니다. [26] 王天君7768 16/04/05 7768 18
64457 [일반] 인공신경망과 알파고 - 알파고는 사고(思考)하는가? [10] 65C028185 16/04/04 8185 19
64271 [일반] 인공신경망과 알파고 - 알파고는 어떻게 동작하는가?(3) [14] 65C027420 16/03/25 7420 6
64169 [일반] PGR의 규정이 좀 더 일관성 있었으면 좋겠습니다. [180] Jace Beleren15550 16/03/20 15550 35
64168 [일반] 블루스크린과의 전쟁 후기 [14] 카서스6530 16/03/20 6530 2
64150 [일반] 아빠와 알파고 [26] 글자밥청춘7664 16/03/18 7664 36
64149 [일반] 인공신경망과 알파고 - 알파고는 어떻게 동작하는가?(2) [21] 65C029924 16/03/18 9924 6
64139 [일반] 1:4 패배에도 승복하지 않는 대단한 한국기원 [65] 장난꾸러기15340 16/03/17 15340 11
64133 [일반] 한국형 AI를 만들고 싶다면, 게임산업을 육성하라. [106] 짱세10962 16/03/17 10962 22
64123 [일반] 이세돌 대 알파고 딥마인드 챌린지 매치 5번기 관전 후기 [54] 홈런볼11471 16/03/16 11471 14
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로