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없이 그걸 처리하는 인간의 뇌도 대단하구요
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
64314 [일반] 4/1 일자로 발효될 규정 개정 사항들입니다. [28] OrBef4740 16/03/28 4740 3
64313 [일반] 보드게임 - 단계별로 즐겨보기 [65] Nybbas6877 16/03/28 6877 5
64312 [일반] 루싸이트 토끼/전효성/오마이걸/비투비/블락비의 뮤직비디오와 DAY6/CNBlue 티저 공개. [16] 효연덕후세우실4376 16/03/28 4376 0
64311 [일반] 출사 : 삼국지 촉서 제갈량전 30 (6. 세 개의 발) [21] 글곰3631 16/03/28 3631 36
64310 [일반] 7레벨 고문 제도를 시작하며 몇 분을 모십니다. [35] OrBef5391 16/03/28 5391 17
64309 [일반] [야구] KIA, 임창용과 연봉 3억원에 입단 합의 [165] 유애나10662 16/03/28 10662 0
64307 [일반] 여론 참여 심사 게시판 (예전: 옴부즈맨 게시판) 를 오픈합니다 [13] OrBef3792 16/03/28 3792 6
64306 [일반] 이대호 선수의 메이저 입성이 확정됐습니다~ [28] 눈시12992 16/03/28 12992 2
64305 [일반] [잡담] 그래서.. 어쩌라는거야.. [16] 스웨트5359 16/03/27 5359 7
64304 [일반] 캐치 유 타임 슬립! - 10 브릿지 (본격 공략연애물) [4] aura3405 16/03/27 3405 2
64303 [일반] 할머니와 부활절 [1] 웃다.3376 16/03/27 3376 8
64302 [일반] 나는 100살이 되면 자살할거야 [12] Colorful9037 16/03/27 9037 7
64301 [일반] 가파르게 솟고 있는 최저임금 비중 [31] 어강됴리11007 16/03/27 11007 2
64300 [일반] [스포일러] 배트맨 v 슈퍼맨을 봤습니다. [88] 류지나8909 16/03/27 8909 10
64298 [일반] 내부로부터 분열되는 유럽 국가들 [17] santacroce9646 16/03/27 9646 47
64297 [일반] [프로듀스101] 김도연스토리 2화 - 판타지오 캐스팅 팀장인데 여기 치어리더 단장이 누구? [11] 작은기린8971 16/03/27 8971 2
64296 [일반] [프로듀스101] 출연계약서 상 면책조항의 효력 [33] 카우카우파이넌스7655 16/03/27 7655 6
64295 [일반] 농구모임 후기 + 반성글 올립니다 [50] 마티치6750 16/03/27 6750 5
64294 [일반] 우리는 왜 항문 주변에 털이 있나?... [40] Neanderthal42231 16/03/26 42231 21
64293 [일반] 짧게쓰는 멀티방 알바 후기. [6] 누구라도15594 16/03/26 15594 7
64292 [일반] 홋카이도 신칸센 오늘 개업했습니다 [16] 도연초6507 16/03/26 6507 0
64291 [일반] 대도시 집중화의 고민: 젊은이들의 런던과 인구감소의 유럽 중소 도시들 [21] santacroce10478 16/03/26 10478 22
64289 [일반] 국토의 완전한 균형발전은 꿈같은 일일까요? [43] 군디츠마라8021 16/03/26 8021 1
목록 이전 다음
댓글

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