- 회원들이 추천해주신 좋은 글들을 따로 모아놓는 공간입니다.
- 추천글은 매주 자문단의 투표로 선정됩니다.
Date 16/11/06 11:15:53
Name   Azurespace
Subject   신경망 학습의 틀을 깨다, DFA
오랜만입니다.
요즘도 딥 러닝에서는 굉장히 신기한 응용들과, 수학적 지식을 기반으로 하는 기기묘묘한 새 알고리즘들이 쏟아지고 있어서, 최신 연구들을 Follow-up 하는 것만도 대단히 벅찬 일이라는 생각이 듭니다.

그래서 한동안 연재를 하지 않고 있었는데, 간만에 엄청 재미있는 논문들이 나와서 이건 꼭 소개해야겠구나라는 생각이 들었습니다.

기존의 인공 신경망을 학습시키는 지도학습 방법은 Back-propagation이라는 방법에 기반하고 있습니다.

우리가 넣은 입력 x에 대해서, 신경망이 생성해낸 결과값 Y_pred와 우리가 알고 있는 정답 Y_real이 있다면
Y_pred와 Y_real의 차이(=error)를 나타내는 loss function이란 걸 정의를 합니다.
차이가 크면 loss도 커지고, 차이가 작으면 loss도 작아집니다.

그 다음 편미분을 통해 각 가중치가 error에 기여하는 정도(=그래디언트)를 계산해내어 학습에 이용하는 것이 기존의 Back-propagation 방법입니다.

잘 이해가 안 되시죠. 어쨌든 미분을 해야만 학습이 가능하다는 것만 착안하시면 됩니다.


Back Propagation 알고리즘에는 여러 문제가 있습니다.

1. 거대한 신경망을 빠르게 학습시키는 것이 어렵다.
신경망은 여러 레이어 구조로 이루어져 있는데요. 결과값을 얻기 위해서는 신호를 앞쪽에서 뒤쪽으로 보내야 하고, 그래디언트를 구하기 위해서는 반대로 뒤쪽으로부터 앞쪽으로 신호를 보내야 합니다. 즉 신경망의 각 레이어 사이에는 계속 신호 전달이 있어야 하기 때문에 매우 큰 규모의 네트워크를 학습시키는 데 어려움이 있습니다. 컴퓨터를 많이 쓰면 되지 않느냐 싶지만, 네트워크(신경망 말고 컴퓨터 사이를 연결한 LAN) 사이에 주고 받아야 하는 데이터도 많아지고, 깊으면 깊을수록 계산 시간보다 서로 신호 주고받는 전송 속도에 오히려 한계가 오고.. 이러는 거죠.

Gradient Vanishing이라는 문제도 있습니다. 깊어질수록 그래디언트의 값이 작아져서 학습에 지장이 생기는 거죠. ReLU를 활성화함수로 쓰기 시작하면서 조금 나아지기는 했고, Residual Network 등 이를 해결하기 위한 여러 테크닉이 생겨났지만 완벽하진 않아요.

2. Biologically Plausible하지 않습니다.
무슨 말이냐면 사람이나 다른 생물체들의 신경 세포들이 학습하는 과정을 설명하지 못한다는 겁니다.  신경세포는 신호를 보내는 방향이 단방향이라 에러 정보를 역전파를 통해 받기도 어려울뿐더러, 그 세포 하나하나들이 미분을 통해서 그래디언트(=가중치의 변화해야 하는 량)을 계산하는 것일까요? 아무래도 걔들이 미분을 할 수 있을 것 같진 않죠. 그냥 인공신경망을 활용하는 데에는 아무 문제가 없지만, 뭐라고 할까요. 생물체의 신경 세포를 수학적으로 모델링해 만든 것이 인공신경망인데, 그 인공신경망을 학습시키는 방법은 생물체가 배우는 방법과는 아무런 관련이 없다? 뭔가 좀 껄끄럽잖아요. 그런데 우리가 생물의 학습 방법과 경로를 아직도 잘 모르니까, 어쩔 수 없는 면도 있고...


그래서 BP는 어쨌든 지금까지 잘 써먹어 왔고, 학습을 잘 시킬 수 있다는 것은 알고 있었지만 이것만으로는 뭔가 부족하지 않나... 라는 생각이 있긴 했습니다.


그런데 얼마 전.. 몇개월 전에 Feedback Alignment라는 논문이 나오게 되는데요.

위에 나온 BP 모식도를 보시면, Prediction 시에는 W1,W2,W3이라는 가중치 벡터를 통해 입력을 출력층으로 보내고, 피드백은 이 벡터의 Transpose를 이용하죠? 이를 통해 Error의 Weighted Sum을 구해나가는 것입니다.

그런데 FA는 뭐냐면..


네트워크 가중치랑 상관없이, 그냥 Random하게 초기화된 아무 Matrix나 대신 써도 그래디언트는 전달되고 신경망은 학습된다는 것입니다. What?
BP는 조금 복잡할지언정 수학적으로는 비교적 간단하고 쉽게 설명할 수 있는 방법이고, 성능 또한 다른 알고리즘들보다 뛰어나기 때문에 사용했던 것입니다. 그런데 네트워크의 Weight랑 전혀 상관없는 아무 Matrix로 에러를 전파시켜도 학습이 된다니... 놀랠 노자였죠.
그런데 심지어 이 논문의 저자는 왜 이렇게 하는 것이 가능한지 수학적으로 증명도 해 놓았습니다. 대단한 사람 많아요.
그러나 일부 학자들은 흥분하기도 했지만 대부분은 오 흥미로운데? 라는 정도로 넘어갔죠.

왜냐면 아무 Matrix를 써도 된다는 것 자체는 재미있지만 BackPropagation에 비해서 Computation 회수가 줄어들지는 않기 때문에 그냥 기존에 사용하던 방법들을 쓰기만 해도 됐거든요.


그러고 나서, 지난 9월에 Direct Feedback Alignment라는 게 나옵니다.

"그냥 출력층 Error에다가 Random Matrix 하나씩 곱해서 Gradient 대신 써도 BP랑 똑같은 성능 나오는데?" "????"
그림 보시면 위 두개랑 차이가 있죠. 기존에는 바로 뒤 레이어에서 학습에 썼던 Error Gradient의 계산이 끝나길 기다렸다가, 거기에다가 가중치를 곱했습니다.

그런데 그게 아니라 그냥 Error에 직접 Matrix를 곱해서 써도 네트워크 학습이 된다라는 거에요.
바로 앞뒤 레이어와 통신을 할 필요 없이, 출력값만 알면 된다는 겁니다.

이러면 그냥 Output layer에서 Error를 랜을 통해 Broadcasting만 해주면 각각의 Computing node에서 개별적으로 학습을 할 수 있다는 것을 의미합니다.

지금보다 훨씬 크고 깊은 네트워크도 오히려 지금보다 빠르게 학습할 수 있을지도 모른다는 가능성을 보여준 것이죠.
심지어 DFA는 BP로는 수렴에 실패한, Tanh를 활성화 함수로 사용하는 매우 깊은 네트워크도 학습에 성공했습니다.
그리고 실험에 사용한 대부분의 신경망 구조에서 BP와 그다지 차이 없는 정확도를 보였습니다.

그럼 뭐냐, DFA가 무조건 BP보다 좋은 것 아니냐? 생각하실 수 있는데, 그렇지는 않은 것 같습니다.
딥 러닝에서는 기존에 비슷한 문제를 풀 때 사용했었던 Pretrained Model이 있는 경우, 이 가중치는 고정해두고 여기에 새로운 레이어를 덧붙여서 나머지 가중치만 학습하는 경우가 있습니다. 예를 들면 Langauge Model 같은 건 새 단어가 추가되었다고 기존의 학습 결과를 버리고 처음부터 학습하기는 좀 그렇잖아요. DFA는 이런 경우에는 BP보다 성능이 떨어졌습니다. 뭔가 구분을 동등한 수준으로 잘 해내기는 하는데, 내부적으로 배워나가는 방식은 전혀 다르다라는 의미겠지요.


DFA는 지금까지 우리가 인공신경망 학습에 대해 생각하고 있었던 그 모든 상식들이 사실 잘못되었었는지도 모른다는 것을 시사합니다.
얼핏 봐서는 이게 말이 되냐? 라고 생각할법한 일들이 사실로 일어나고 어떻게든 동작한다는 것이 Stochastic Computation의 묘미인지도 모르겠어요. 기존의 Deterministic 컴퓨터의 방식과는 너무나 다르죠.

게다가 사실 DFA는 아무 대학생이 Matlab 잡고 만들어도 10분이면 구현할 수 있는 엄청 간단한 알고리즘이에요. BP보다 훨씬 간단하고 쉬운 알고리즘이 있었는데 그보다 복잡한 알고리즘을 수십년동안 붙잡고 있었다는 거에요.
(물론 그동안 신경망이 넘어야 했던 수많은 산들을 생각해보면 이해가 안 되는 것도 아닙니다만)

아, IFA(Indirect Feedback Alignment) 라는 것도 있는데, 이건 Biologically Plausible한 모델을 만들기 위해 논문 저자가 생각해낸 개념이에요.
일부 뉴런들은 Error로부터 직접 Feedback을 받고, Direct Feedback Path가 없는 뉴런들은, 피드백을 직접 받은 뉴런들로부터 간접 피드백을 받는다는 것이죠. 실제로 이런 식으로 학습하는지 어떤지는 아직 알 수 없습니다. 단지 생체 신경망에서도 가능한 구조이다- 라는 것 뿐이죠. 이게 맞는지 아닌지 검증하는 것은 인공신경망 학자들이 생물학자들에게 던진 숙제라고 보면 될 것 같아요.




* 수박이두통에게보린님에 의해서 티타임 게시판으로부터 게시물 복사되었습니다 (2016-11-21 00:05)
* 관리사유 : 추천게시판으로 복사합니다.



10


    목록
    번호 제목 이름 날짜 조회 추천
    1258 IT/컴퓨터(장문주의) 전공자로서 보는 ChatGPT에서의 몇 가지 인상깊은 문답들 및 분석 9 듣보잡 22/12/17 3416 19
    1242 IT/컴퓨터망사용료 이슈에 대한 드라이한 이야기 20 Leeka 22/09/30 3280 9
    1230 IT/컴퓨터가끔 홍차넷을 버벅이게 하는 DoS(서비스 거부 공격) 이야기 36 T.Robin 22/08/08 3215 25
    1141 IT/컴퓨터변화무쌍한 웹 기술 역시 톺아보기 - 1 16 nothing 21/11/05 3890 10
    1082 IT/컴퓨터우리도 홍차넷에 xss공격을 해보자 19 ikuk 21/04/20 4677 14
    1079 IT/컴퓨터<소셜 딜레마>의 주된 주장들 9 호미밭의 파스꾼 21/04/06 3935 13
    1056 IT/컴퓨터주인양반 육개장 하나만 시켜주소. 11 Schweigen 21/01/24 5077 40
    759 IT/컴퓨터컴퓨터는 메일을 어떻게 주고 받을까? 13 ikuk 19/01/18 6840 17
    727 IT/컴퓨터인터넷 뱅킹, 공인인증서를 사용하지 않아도 안전할까? 31 T.Robin 18/11/07 6625 10
    692 IT/컴퓨터Gmail 내용으로 구글캘린더 이벤트 자동생성하기 8 CIMPLE 18/09/06 5872 6
    593 IT/컴퓨터금융권의 차세대 시스템이 도입되는 과정 41 기쁨평안 18/02/13 9691 26
    570 IT/컴퓨터정보 기술의 발달이 지식 근로자에게 미친 영향에 대한 추억 11 기쁨평안 18/01/03 9013 23
    568 IT/컴퓨터아마존이 만든 사고를 역이용한 버거킹의 혁신적인 광고 7 Leeka 17/12/29 8647 19
    558 IT/컴퓨터'옵션 열기'의 정체 16 Toby 17/12/07 10916 37
    529 IT/컴퓨터뱀은 다리를 가지고 있다구 16 Toby 17/10/16 7195 11
    520 IT/컴퓨터애플의 새로운 시스템, APFS 이야기 15 Leeka 17/09/28 8870 5
    502 IT/컴퓨터컴쫌알이 해드리는 조립컴퓨터 견적(2017. 9월) 25 이슬먹고살죠 17/08/29 8589 23
    480 IT/컴퓨터재미로 써보는 웹 보안이야기 - 1 19 Patrick 17/07/25 6146 7
    447 IT/컴퓨터탭 내빙(Tabnabbing) 보안 공격 10 Toby 17/06/07 8158 12
    374 IT/컴퓨터컴알못의 조립컴퓨터 견적 연대기 (1) 배경지식, 용도결정 편 6 이슬먹고살죠 17/02/23 7771 12
    319 IT/컴퓨터회귀신경망으로 만든 챗봇 11 Azurespace 16/12/07 9635 8
    297 IT/컴퓨터신경망 학습의 틀을 깨다, DFA 15 Azurespace 16/11/06 8879 10
    274 IT/컴퓨터컴퓨터는 어떻게 빠르게 검색을 할까 - 보이어-무어-호스풀 알고리즘 18 April_fool 16/10/04 13556 1
    236 IT/컴퓨터어느 게임 회사 이야기 (1) 26 NULLPointer 16/07/19 21391 29
    179 IT/컴퓨터100점짜리 단어를 찾아서. 30 April_fool 16/04/05 10348 15
    목록

    + : 최근 6시간내에 달린 댓글
    + : 최근 12시간내에 달린 댓글

    댓글