‘밑바닥부터 시작하는 딥러닝’ 세미나 2

머신러닝 입문은 문제해결을 위해 알고리즘을 설계하고 구현하던 저에게는 참으로 곤욕스러운 일이었습니다. ‘어떻게’를 알아야만 문제를 해결할 수 있었던 제가 ‘어떻게’를 알려주지 않고 문제를 푸는 세계에 들어온 것입니다.

저는 어차피 다른 세계에 왔으니(연역의 세계에서 귀납의 세계로) 적응하기로 결심했고 그럭저럭 잘 적응해갔습니다. 그런데 딥러닝 세계에 들어서자 ‘어떻게’는 어린아이 장난 같은 수준의 괴롭힘 이었습니다. ‘대체 이것이 가능한 이유가 뭐야’라는 근본적인 수준이 되었을 때 저는 녹다운되었습니다.

몸을 추스리고 뭔가 돌파구를 찾아야 했습니다. 근본적인 수준의 문제는 항상 그렇듯이 그 뿌리를 찾아가야 합니다. 그 뿌리에 퍼셉트론이 있었습니다.

‘퍼셉트론’ 이게 대충 넘어갈 게 아닙니다. 가히 천재적인 발상입니다. 말로 표현할 수 있으면 좋으련만, 느껴야만 알 수 있는 것이라.  이 천재적인 발상이 가능한 것으로 이해되면 신경망이 가능한 이유 또한 이해가 되기 시작할 것입니다.

2.6 NADN에서 컴퓨터까지

p47. 퍼셉트론은 신경망(딥러닝)의 기원이 되는 알고리즘이다. 퍼셉트론의 구조를 배우는 것은 신경망과 딥러닝으로 나아가는 데 중요한 아이디어를 배우는 일이 된다.

p61-62. 컴퓨터에서 이뤄지는 처리가 매우 복잡할 것 같지만, 사실은 (놀랍게도 ) NAND 게이트의 조합만으로 컴퓨터가 수행하는 일을 재현할 수 있다. NAND 게이트는 퍼셉트론으로 만들 수 있다. 다층 퍼셉트론은 컴퓨터도 만들 정도로 복잡한 표현을 해 낸다.

퍼셉트론은 층을 거듭 쌓으면 비선형적인 표현도 가능하고, 이론상 컴퓨터가 수행하는 처리도 모두 표현할 수 있다.

 

2.1, 2.2를 읽고 퍼셉트론이 무엇인지, 어떻게 퍼셉트론으로 AND, NAND, OR 게이트가 가능한지를 알아 봅니다. 2.3을 참조해서 파이썬으로 퍼셉트론을 구현해 봅니다.

퍼셉트론에 대해서 좀 더 자세히 알고 싶다면 다음 링크를 참조합니다.

http://www.aistudy.com/neural/model_kim.htm#_bookmark_19e9798

 

퍼셉트론의 가중치도 놀랍지만 임계값에 대한 발상은 정말 대박입니다. 신경망 연구가 기반이 되었지 않느냐라고 반문할 수는 있지만.

임계값 대신 편향이라는 개념을 도입합니다. ‘누가 왜 그랬는지’가 궁금해서 검색해봤지만 관련 자료는 찾지 못했습니다. 함수의 상수로 표현하기 위해서인가라고 생각해 봅니다.

2.3.2, 2.3.3

p52. θ를 -b로 치환

p53. 가중치는 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수고, 편향은 뉴런이 얼마나 쉽게 활성화 하느냐를 조정하는 매개변수 이다. 편향이라는 용어는 한쪽으로 치우쳐 균형을 깬다라는 의미를 담고 있다.

 

2.4, 2.5를 읽고 다층 퍼셉트론이 등장한 배경을 이해하고, 다층 퍼셉트론으로 XOR 게이트를 구현해 봅니다.

 

퍼셉트론은 매개변수 값을 사람이 직접 정합니다. 정해야할 매개변수가 적을 때는 해 볼만하지만 매개변수가 많아진다면…

다음은 어디로 가야할까요? 자연스러운 수순으로 우리는 매개변수 값을 자동으로 설정할 수 있는 방법을 찾아야 합니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*