K-MOOC '실습으로 배우는 머신러닝' 김영훈 교수님
Ch10,Ch11.Neural Network(Logistic Regression, cross entropy, linear regression, activation function, hidden layer, backpropagation, epochs, batch size
Ch10. Neural Network Basic
Logistic Regression
퍼셉트론을 잘 구성해서 neural network를 구성하는 과정.
퍼셉트론은 linear, logistic regression과 밀접한 연관이 있다.
Loss함수 정의, Min Loss : 여기서 Loss는 cross-entropy
- i 관측치 인덱스, j는 클래스 인덱스
- Logistic Regression model(Perceptron)은 neuron과 correspond
- Sigmoid function
Linear Classifier의 한계
- 비선형적인 패턴을 학습할 수 없다.
- appropriate for linear classifier로 transform
- Cartesian coordinates
- Polar coordinates
구조
linear classifier를 쌓아서(stack). neural network를 구성. 구조를 딥하게 쌓아서 Deep neural network. -> 복잡한 구조도 학습하더라.
Linear Regression
Input인 x값들이 있다면 하이퍼파라미터와 같은 역할을 하는 베타 값을 곱해주고, 최종 output인 Y 값을 찾는다.
Logistic Regression
linear regression이 sigmoid function의 input으로 들어가있다.
sigmoid와 같이 비선형적인 패턴을 만들어주는 것을 activaton function이라고 한다.
Multi-output Linear Regression/ Logistic Regression for Hidden Layer
w는 가로형 벡터([w10, w11, w12 --- , w1p]
계산이 일어나는 층을 Hidden Layer라고 한다.
output에서 activation function을 적용해주면 multi-output logistic regression 형태가 된다.
2-Hidden Layer Neural Network
Y = a(W2 a(W1X))
Activation Function
- ReLU : 0보다 작으면 0을 출력, 양수면 x값 자기자신을 출력. 요즘 많이 사용
- Leaky ReLU : 0보다 작으면 약간의 값을 가지도록.
Ch11. Optimization Review
Optimization : Loss Function 정의, 그것을 최소화
- how to calculate Gradients?
- Loss함수/편미분 : 입실론을 더하고 빼주면서 계산을 해주면 비효율적이다.
Backpropagation
함수 미분의 연쇄 법칙을 이용해서 인공신경망 파라미터의 기울기를 구하는 방법
각 파라미터의 gradient를 계산해주는 효율적인 방법
chain rule에 근거한 neural network 파라미터
코드 실습
- datasets라는 모듈에는 데이터를 쉽게 불러올 수 있도록 저장되어 있다.
- shape(60000, 28,28) : 28x28 이미지 데이터가 6만개
- 흑백데이터라서 채널이 한 개
- label : 0~9까지의 숫자
- import models : 모델을 만들 공간, 워크스페이스를 만드는 코드
- models.Sequential() : 레이어를 쌓을 테니 입력할 공간을 만들어라
- .add() : 원하는 레이어 입력
- units : 출력될 perceptron 갯수.
- activation 함수 지정
- shape은 28*28차원 1차원 벡터로 만들어서 넣을 것
- 분류해주는 마지막 레이어기 때문에 activation은 softmax로 해서 다중 클래스를 분류하겠다는 정의
- .compile()
- optimizer 지정
- loss : cross_entropy로 지정해줬다.
- metrics 학습, 출력되는 과정에서 measure
- .reshape() : 2차원을 1차원 벡터 형식으로 변경해줌
- .astype() / 255
- image 데이터의 경우 0~255까지의 수치를 가짐.
- 보통 neural network에 넣을 때 0~1 사이로 스케일을 해줌.
- to_categorical : 나중에 0, 1로 해서 cross entropy를 계산 할 수 있게 변경
- .fit(입력변수, 출력변수, epochs=5, batch_size=128)
- batchsize : stochastic gradient descent를 소개할 때 잠시 언급. 데이터 전체를 한 번에 학습 시키기 어렵기 때문에 데이터를 쪼갠다. 그 때 데이터를 128개씩 넣을 것이다.
- epochs : 배치 별로 업데이트가 이루어지는데, 전체 training 데이터가 다 업데이트에 반영이 되었을 때 하나의 epoch이다. 이 epoch를 다섯 세트 하겠다. RF 의 n_estimator와 비슷한 개념
- .evaluate(test_images, test_labels) 확인
댓글