이 내용은 한경훈 교수님의 밑바닥부터 시작하는 딥러닝 강의를 정리한 것으로서 제 정리보다는 아래의 링크를 참고하시는 것을 추천드립니다.
https://youtu.be/8Gpa_pdHrPE
Dendrite : 이웃 뉴런에서 전기 신호를 받는다.
Synapse : 다른 뉴런과 dendrite의 연결 부위에 있다. 전기 신호의 세기를 재조정 한다.
Soma(cell body) : dendrite로부터 받은 여러 전기신호들을 모두 합친다.
Axon : Soma의 전위가 일정 이상이 되면, 이웃 뉴런으로 전기 신호를 보낸다.
퍼셉트론은 뉴럴 네트워크를 수학적으로 모델링한 것이다. synapse의 재조정, soma의 합치기, axon의 임계값과 전달의 역할을 가진다.
x는 들어오는 전기 신호의 세기를 의미한다.
w는 가중치weight이다. 재조정의 역할을 한다.
0세타는 임계값이다. threshold의 역할을 한다.
and게이트를 성립하기 위한 가중치와 임계값을 구해보자
and게이트 앞에 not이 붙어져 있다.
nand게이트가 성립하려면
w1 = -0.5, w2 = -0.5, 0(세타) = -0.7와 같이 값을 설정해준다.
논리값이 다를때만 True를 반환한다.
수학적인 분석을 위해서 좌표평면 위에서 알아본다.
x/a + y/b = 1의 식으로 만들어주면 손쉽게 직선을 만들 수 있다.
다만 직선으로는 XOR게이트를 구현해낼 수가 없다.
따라서 단층 퍼셉트론이 아닌 다층 퍼셉트론을 사용할 필요가 생긴다.
코드 구현에 앞서 임계값을 좌변으로 넘겨서 bias로 만들어 준다.
부등식을 heavyside함수를 통과하는 것으로 바꿔서 표현한다.
h(a) >= 0 or h(a) < 0
heavyside 함수는 조정된 입력값(w, b를 통해)을 바꾸어주는 활성화 함수이다.
heavyside 생물학적인 activation을 생각한 것이다.
퍼셉트론에서 인공신경망으로 넘어가기 위해서는 다층을 활용해야 한다.
나아가서 머신러닝을 위해서 미분을 할 수 있는 형태의 활성화 함수가 필요하기 때문에
sigmoid함수를 사용해야 한다.
인공신경망의 전체적인 구조는 다음과 같다.
1-3.forward.inpynb에 작성 완료
overflow는 computer science에서 메모리에 너무 큰 숫자를 처리할 수 없기 때문에 나타는 현상으로 개념적인 무한대가 아닌 메모리 제한에 따른 무한대이다.
따라서 softmax를 하기 전에 미리 값을 정리를 해준다.