‘밑바닥부터 시작하는 딥러닝’ 세미나 3
퍼셉트론의 구조와 동작 원리를 알고나면 신경망의 가능성에 대한 의심도 어느정도 해소됩니다. ‘대체 이것이 가능한 이유가 뭐야’에 대해 ‘뭐 이런 이유에서 가능한거 아니겠어’라고 수긍할 수 있습니다.
신경망은 퍼셉트론의 발전된 형태입니다. 따라서 신경망에 대한 이해는 신경망이 퍼셉트론과 어떤 공통점과 차이점이 있는지를 알아보는 것으로 시작할 수 있습니다.
3.1과 3.2를 읽고 신경망과 퍼셉트론의 공통점과 차이점을 알아봅니다.
활성화 함수라는 용어를 사용하면서 좀 혼란스럽습니다. 퍼셉트론의 임계치를 사용할 때는 활성화(1인 경우 활성화)라는 의미가 그대로 드러나고 있지만 신경망에서 시그모이드 함수나 렐루 함수를 사용할 때는 그렇지 않습니다. 활성화라는 의미보다 변환의 의미가 더 강하다고 생각이 듭니다.
퍼셉트론을 이해하고 신경망을 보았을 때 신경망이 복잡한 논리를 처리할 수 있다는 것은 수긍이 되었습니다. 활성화 함수를 통해 비선형도 처리할 수 있다는 것도 수긍이 되었습니다. 그래도 프로그래머인 저는 여전히 답답했습니다. ‘복잡한 제어 구조를 어떻게 신경망이 처리하지?’라는 의문은 여전히 불분명했습니다.
어느날 문득 신경망이 해결하려는 것과 제가 프로그래밍을 통해 해결하려고 했던 문제가 다른 유형임을 깨달았습니다. 신경망이 처리하려는 것은 입력과 출력의 상관관계입니다. 선형과 비선형을 모두 사용해서 입력과 출력 사이의 상관관계를 알아내는 것이 신경망이 하고자 하는 것입니다. 상관관계만 알아내면 되기 때문에 우리가 이전에 해 왔던 프래그래밍 요소들이 다 필요한 것은 아닙니다. 신경망으로 우리가 이전에 해 왔던 프로그래밍을 하려면 좀 더 많은 장치들이 필요할 것입니다.
3.3을 읽고 넘파이 다차원 배열을 사용한 계산법을 숙달합니다.
3.4를 읽고 3층 신경망을 구현합니다.
3.5를 읽고 출력층을 설계합니다.
3.6을 읽고 손글씨 숫자 인식을 구현합니다.
원-핫 인코딩 이것도 별 것 아닌 것 같은데 대단한 발상입니다.
다음에는 신경망의 학습에 대해서 다룹니다.