[8일차] 인공신경망
오늘은 인공신경망에 대해서 공부했다.
근데 뭐랄까 강의해주시는 교수님이 우리가 수식을 이해하길 바라지도 않는거같다.
쓱쓱 넘어가버림
그래서 이걸 추가적으로 공부를 해야할지 고민된다.
만일 한다면 예전에 학교 수업 자료를 복습하면 되긴 하는데..흠..고민된다.
우선 복습하면서 생각해보자
여태 배운건 선형회귀 / 다중 선형회귀였다.
하지만 모든 걸 선형으로만 나타낼 수는 없는 법,(선을 말하는건 아니다 선형!이다!)
비선형모델인 신경망(neural network)에 대해서 배웠다.

👆이런식의 데이터들을 분류할 때 선형 모델로만은 분류할 수 없다. 비선형 모델을 이용해서 데이터를 표현할 수 있어야한다.
그 방법으로 강력하다고 불리는 ANN에 대해서 배워보자. 인공신경망!
neural network
우선 요약을 먼저 하고 시작하자면

이런 층이 여러개 있다.
입력값을 받으면 그걸로 가중치행렬을 학습한다.(이게 하나의 퍼셉트론이다)
그리고 결과값을 활성함수에 넣고 또 그걸 선형모델로 학습하고 또 그걸 또그걸 또 ㄸ ㄷ. .. .
이런식으로 선형모델과 활성함수를 합성하여 다층으로 구성한게 바로 MLP이다 멀티 레이어 퍼셉트론
이거까진 앞의 레이어에서 나온 결과물로 학습하고 학습하고 앞으로 나아가니 순전파이다(forward propagation)
층을 여러개 쌓을 수록 필요한 뉴런의 숫자가 줄어들기 때문에 효율적인 학습이 가능하다고한다!(이유는 설명해주시지 않았다!)
딥러닝(backpropagation)
딥러닝은 이제 순전파가 아니라 역전파 즉 backpropagation이다. 이거 공식 싹다 배웠었는데..기억 저편으로 날라갔다 휘리릭
하튼 역전파는 각 층에 사용된 파라미터를 이용해서 학습한다. 순전파와는 역순으로 진행하는데 연쇄법칙 기반 미분으로 쉽게 구할 수 있다고 한다!
역시나 뭐 자세한 설명은 없었다...ㅎ....
예전 학교 강의자료를 바탕으로 트레이닝 과정을 간단하게 한번만 정리하자면
- training set을 준비한다 생긴건 D.train = {(x(1), y(1)), …., (x(n), y(n)) 이렇게 생겼다.
- 학습해야할 w와 b들을 random value로 초기화한다. (w는 계수, b는 상수이다)
- (데이터 하나) forward pass로 모든 a값(직전 레이어가 넘기는 값)을 구한다
- (데이터 하나) backward pass로 모든 𝛿값(해당 뉴런이 전체 error에 영향을 미치는 정도)을 구한다
- (데이터 하나) 모든 w와 b에 대해서 미분값을 구한다
- 모든 데이터에 대해서 3 4 5 를 반복반복 이게 바로 주어진 traind data에 대한 미분값을 구한거다.
- 다 더하면 최종 미분값이 구해진다
- 구한 미분값을 바탕으로 w, b를 업데이트
- w,b의 값의 변화가 적어질 때 까지 1-8을 반복반복
진짜 대박이다. 저 수업을 들을 때 아이패드가 있었어서 교수님의 목소리가 녹음되어있어서 정말 정말 다행이다ㅜ
softmax 연산
이 연산은 모델이 최종적으로 출력될 때 확률로 변환시켜주는 연산이다
분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 에측한다고 한다!
그러니까, 이거다

선형모델을 통해 학습한 선형모델의 결과를 한번 싹 정리해서 확률적으로 분류해줘서 classification 모델로 만들어준다!
활성 함수
위에서 활성함수라는 말을 잠깐 하고 넘어갔는데 선형모델 학습에 활성함수를 합치면 이건 신경망이다. 즉 비선형 모델이다
역시나 선형모델을 통해 학습만 결과를

이러한 종류의 활성함수를 거쳐서 결과값을 내준다. 현재는 ReLU가 가장 많이 쓰인다고 한다.
왜냐하면 ReLU의 장점으로는
- 기존 linear model이 가지는 속성들을 계속 유지하고 있다. (0이상은 그대로 가져가니까)
- 경사하강법으로 optimize하기가 쉽다고한다.
- 결과론적인 이야기긴 한데, generalization할 때 성능이 좋다고 한다
- sigmoid와 tanh같은 경우는 끝부분에 갈수록 경사가 완만해져서 경사하강법이 제대로 작동하지 않는 문제점이 있었는데 이를 극복했다.
이렇게 네가지 정도의 이유로 요즘은 ReLU를 더 자주쓴다고 한다.
역대급으로 짧은 복습노트다......수식을 다 생략하니까 간단하다...그치만...배웠는데 생략한게 아니라 안배웠다...
자습으로 배울까 생각했지만.. 음.. 그게 목적이 아닌거같은 느낌적인 느낌.
하여튼 오늘은 여기까지!
(는 사실 pandas도 써야한다)