-
TensorFlow Training Details | Advanced Learning AlgorithmMachine Learning/Stanford ML Specialization 2024. 2. 11. 14:54
이전 시간에서 모델을 트레이닝 하는 코드를 써봤는데, 실제로 이 코드가 무엇을 하는지 살펴보자. Neural Network의 세부 사항을 살펴보기 전에, 이전에 Logistic Regression 모델을 어떻게 훈련했었는지 기억해보자.
Logistic Regression
먼저 1단계로, Feature들인 x와, weight(w), bias(b)가 주어지면 출력값을 계산하는 방법을 지정해주는 단계였다. W와 X를 dot product한 값에 b를 더한 값이 z가 되고, 그 z를 인풋으로 sigmoid 함수에 넣어주면 된다.
sigmoid 함수의 인풋을 계산해서 넣어주는 첫번째 단계 이제 Logistic Regression 두번째 단계이다. 바로 Loss and Cost Function을 계산하는것이다(손실함수와 비용함수라고도 한다.) 여기서, 이 L 값(Loss Function)의 값을 구하기 위해서 위 1번 단계에서 계산한 값과 y값(실제값)을 인풋으로 주게되고, 실제 레이블 f_x와 y를 갖고, 아래 정의된 loss 수식을 이용해서 loss값을 구해내게 된다. 이것을 모든 값들에 대해 한 후, 모든 m개의 데이터의 이 로스값의 평균값을 구한것이 바로 J가 된다.
여기서 많이 헷갈리는점! Loss Function과 Cost Function의 차이는?
Loss Function은 1개 example에 대한 계산값이고, 모든 example에 대한 loss function의 평균을 구한것이 바로 coss function이다.마지막 단계! 이 J값을 이용해서 w, b 값을 업데이트 하면서 이 J 값을 최소화 하는 과정을 거친다.
자, 이제 이 단계들을 Neural Network에서는 어떤 단계에 속하는지 생각해보자.
첫번째 단계에서 sigmoid 함수를 지정하고 어떻게 compute할지 정한것처럼, Neural Network에서도 각 Dense별로 Activation function을 지정해주게 된다.
2번째 단계에서 loss function을 결정했던것처럼, neural network에서도 위에서 결정한 model에 어떤 loss function을 사용하면 될지 설정을 해주게 된다. 여기서 loss function은 BinaryCrossentropy를 사용했다. 이 이외에도 다른 loss function이 존재한다.
마지막으로, 함수로 이 것들을 호출해서 Neural Network에서 비용을 실제로 최소화 하게 된다.
Create Model
자, 이제 Neural Network에서 이 세 단계를 조금 더 자세하게 살펴보자.
첫번째 단계에서는 입력값인 x와 파라미터 w, b가 주어지면 어떻게 계산하는지 방법을 지정하게 된다. 코드는 다음과 같았다.
import tensorflow as tf from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense model = Sequential([ Dense(units=25, activation='sigmoid'), Dense(units=15, activation='sigmoid'), Dense(units=1, activation='sigmoid'), ])
전체 아키텍쳐를 지정했다. 첫번째 hidden layer(은닉 레이어)에는 25개의 뉴런(유닛)이 있고, 다음 hidden layer에는 15개의 뉴런이, 그리고 출력 유닛 하나가 있고 Sigmoid 활성화 값을 사용하고 있다는 것을 알 수 있다. 이 코드를 기반으로, w, b가 무엇인지 알 수 있다.
Loss and Cost Functions
이번에는 loss function 이다. handwritten digit classification 문제는 binary classification에 속한다. 여기서 Loss Function은 아래와 같았다. prediction값과 target값을 비요하는 수식이었다.
L(f(x), y) = -ylog(f(x)) - (1-y)log(1-f(x))
이 logistic loss는 binary cross entropy로도 알려져 있다. 그래서 Keras에서 제공하는 함수를 사용할 수 있다.
from tensorflow.keras.losses import BinaryCrossentropy model.compile(loss=BinaryCrossentropy())
만약, 이 문제가 binary classification이 아니었다면 다른 loss function을 이용할 수 있다. 예를 들면 Mean Squared Error 같은 함수가 있겠다. 코드는 아래와 같이 쓸 수 있다.
from tensorflow.keras.losses import MeanSquaredError model.compile(loss=MeanSquaredError())
Gradient Descent(경사 하강)
마지막으로, TensorFlow에 교차 함수를 최소화 하도록 요청한다.
경사 하강법을 사용하려면 위에 나와있는 derivative를 계산해야한다. 이것은 실제 TensorFlow의 기능이고, back propagation, 즉 역전파라는 알고리즘을 사용한다. TensorFlow에서는 fit이라는 함수 내에서 이 back propagation을 모두 구현하고 있다. 이제 설정된 모델을 이 복잡한 수식을 대신 해주는 fit을 이용해서 x, y를 훈련 세트로 주고, 100회 반복 또는 100 Epoch 동안 호출하도록 지시하기만 하면 된다.
model.fit(x, y, epoch=100)
https://www.youtube.com/watch?v=sgjWvo4-GUA
epoch도 100으로 설정했으니 헤이즈 마지막 너의인사도 100번 듣기,,,ㅎ Reference
Advanced Learning Algorithms
In the second course of the Machine Learning Specialization, you will: • Build and train a neural network with TensorFlow to perform multi-class ... 무료로 등록하십시오.
www.coursera.org
'Machine Learning > Stanford ML Specialization' 카테고리의 다른 글
Multiclass Classification | Advanced Learning Algorithm (0) 2024.03.24 Activation Functions | Advanced Learning Algorithm (0) 2024.03.24 TensorFlow Implementation | Advanced Learning Algorithm (0) 2024.02.11 Matrix Multiplication Code | Advanced Learning Algorithm (0) 2024.02.10 Matrix Multiplication Rules | Advanced Learning Algorithm (0) 2024.02.10