기계 학습을 공부하면서, 여기다 정리를 해보고자 합니다.
기계학습에서 많은 갈래가 있겠지만, 신경망 관련해서 내용을 정리하고자 합니다.
특히 최종적으로는 SNN(Spiking Neural Network)내용을 중점적으로 할려고 하는데,
아직 공부가 부족해서 그건 한참 후가 될꺼 같네요.
신경망의 내용은 역시 신경망은 대체 무엇인가와 역사 정도 장점 정도가 적당한거 같네요.(저도 공부하는 단계이니, 틀린 내용 있다면 피드백 부탁 드립니다.)
기계학습이나 인공지능 쪽은 결국 컴퓨터나 기계가 학습을 하게 하고, 궁극적 모델을 인간으로 잡고 있죠. 이 때 큰 갈래로 계산주의와 연결주의로 나눠집니다.
계산주의는 인간의 뇌가 하고 있는 건, 언어와 같은 기호를 처리하는 시스템이고, 이를 직렬적으로 연결해서 계산하면 인간의 뇌를 만들수 있다는 생각입니다.
연결주의는 인간의 뇌의 구조를 보면 신경망 다발로 얽혀있는데, 이런 뉴런을 연결하여 정보를 병렬적으로 처리해야 된다는 생각이죠.
(저의 경우는 연결주의가 궁극적으로 인간의 뇌를 만들 수 있다고 생각합니다. 물론 어느 특정한 문제해결의 경우에는 연결 주의 식으로 해결하는게 더 좋을 수도 있지만, 소위 강한 인공지능을 만들수 있는건 연결주의라고 생각합니다. 이유는 그냥 뭐 직감이죠.ㅋ)
인공 신경망 이론은 결국 연결주의와 일맥상통하는데, 어느 특정한 모델을 가진 뉴런(인간의 뇌에는 20종 정도의 뉴런을 가진다)을 가지고 서로 연결을 잘 시키면 지능을 만들 수 있다는 생각이죠. ANN(Artifical Neural Network)를 연구하는 방법은 뉴런 그 자체를 연구하는 방법, 어느 모델을 가지고 시뮬레이션 후 결과 분석 그리고 수학적 분석을 통해서 하고는 합니다. 앞으로의 내용도 여러 가지 방법을 혼합해서 할듯하네요. 이제 신경망의 역사에 대해 설명하겠습니다.
ANN의 최초의 모델은 1943년 정신과 의사 맥클로크(McCulloch)와 수학자인 피츠(pitts)에 의해 만들어졌습니다. 그들의 논문<A Logical calculus of ideas immanent in nervous activity>에서 신경세포를 간단하게 모델링한 뉴런을 이용하여 AND, OR, NOT과 같은 논리 연산을 만들어 냈습니다.
McCulloch-Pitts 모델에서 사용한 가설은 다음과 같다.
1. 뉴런은 활성화되거나 혹은 활성화되지 않은 2 가지 상태이다. 즉, 뉴런의 활성화는 all-or-none 프로세스이다.
2. 어떤 뉴런을 흥분되게 (excited) 하려면 2개 이상의 고정된 수의 시냅스가 일정한 시간내에 활성화 (activated) 되어야 한다.
3. 신경 시스템에서 유일하게 의미있는 시간지연 (delay) 은 시냅스에서의 지연 (synaptic delay) 이다.
4. 어떠한 억제적인 (inhibitory) 시냅스는 그 시각의 뉴런의 활성화 (activation) 를 절대적으로 방지한다
5. 신경망의 구조는 시간에 따라 변하지 않는다.
원본 위치 <http://www.aistudy.co.kr/neural/McCulloch_Pitts.htm>
뉴런은 인접한 여러 뉴런으로부터 신호를 수신하는데, 이 때 뉴런간의 연결에는 흥분성과 억제성 2가지가 있다고 가정합니다. (w가 흥분성, p가 억제성입니다.)
NET는 가중 입력 값을 갖는데, 저 NET값은 활성화 함수의 입력 값이 되며, y값이 점화되는지 여부가 결정됩니다.
약간 다른 쪽에 빠져서 위의 뉴런을 통해 논리 연산을 할수 있다는 의미를 파악해 보겠습니다. 여러분들 누구나 컴퓨터를 사용할 것입니다. 정말 대단한 발명품이죠. 그러면 누가 최초로 컴퓨터를 만들었을까요? 아시는 분들은 아시겠지만, 앨런 튜링이라는 분이 만들었습니다. 찾아보면 대단한 분인데, 이 분 덕분에 2차 세계대전에서 연합군이 이길수 있었다 생각합니다. 여러 업적이 있겠지만, 가장 중요한 업적으로는 컴퓨터(튜링 기계)라는 개념을 최초로 만들었습니다. <on computable numbers with an application to the entscheidungsproblem>에서 튜링기계라는 개념이 나왔는데,매우 긴 테이프 같은 데다, 간단한 연산만 하고, 앞뒤로 테이프에다 기록하고 읽을 수있는 기계가 있다면, 대부분의 수학적 알고리즘은 풀어낼 수 있다는 내용입니다. 결국 매우 복잡한 수학적 알고리즘도 결국 반복적이고 간단한 계산이면 해결할 수 있다는 의미입니다. 좀 현대적인 예를 들면, 아무리 어려운 프로그램(게임, 수학계산, 그래픽 연산, 검색엔진) 모두 간단한 연산과 읽기, 기록 이 정해진 순서대로 수행한거다 라는 의미입니다. (자세한 내용은 http://www.aistudy.com/computer/turing_machine.htm)
간단하게 말하면 사칙 연산 정도의 계산과 기록, 읽기면 거의 모든 걸 해결할수 있다는 말입니다. 거기다 한가지 더 나아가서 논리 연산(AND, OR, NOT)만 할 수 있다면 사칙 연산도 할 수 있습니다. 이건 다시 말해서 논리 연산이 가능하면, 사칙 연산이 가능하고, 사칙 연산이 가능하면 튜링 기계를 만들수 있습니다. 튜링 기계는 대부분의 알고리즘을 구현하는 기계이므로, 논리 연산만 가능하다면 대부분의 알고리즘을 구현할 수 있다는 말입니다. 결국 뉴런으로 된 신경망을 잘만 엮으면 컴퓨터도 만들 수 있다는 말이죠. 간단한 뉴런으로 된 신경망을 엄청난 가능성을 가진 것입니다.