ANN 과 손실함수, 역전파법
- 인공신경망과 손실함수
- 인공신경먕(ANN)
- 손실함수(Loss Function)
- 학습 알고리즘
- GD, SGD , Momentum, AdaGrad,RMSProp, Adam
- 역전파법(Back propagation)
- 역전파법
- 역전파법 구현
인공신경망(ANN)
인공신경망이란? 뇌의 학습방법을 수학적으로 모델링한 기계학습 알고리즘 즉, 사람의 뇌를 모델링하여 기계에 적용한 것.
- Dendrite : 기계학습 에서는 벡터의 형태로 입력된 데이터
- Soma : dendrite를 통해 전달받은 입력을 합산하는 기능
- Axon : soma에서 계산된 값을 출력한다.
- 𝑓(∑𝑖𝑤𝑖𝑥𝑖+𝑏)f(∑iwixi+b)
- X : 입력
- w : 가중치
- b : 편향
- f : 활성화 함수
- u : 선형결합
- z : 출력
손실함수(Loss function)
신경망에서 내놓는 결과값(예측값)과 실제 결과값 사이의 차이를 정의하는 함수
회귀 평균제곱오차(MSE)
MSE=1𝑛∑𝑖=1𝑛(𝑌𝑖^−𝑌𝑖)2MSE=1n∑i=1n(Yi^−Yi)2
분류 활성화 함수로 소프트 맥스 함수 교차엔트로피 오차(Cross entropy Error)
import numpy as np
def mean_squared_error(y,t):
return 0.5*np.sum((y-t)**2)
t = [0,0,1,0,0,0,0,0,0,0]
y1 = [0.1,0.05,0.6,0.0,0.05,0.1,0.0,0.1,0.0,0.0]
print(mean_squared_error(np.array(y1),np.array(t)))
y2 = [0.1,0.05,0.1,0.0,0.05,0.1,0.0,0.6,0.0,0.0]
print(mean_squared_error(np.array(y2),np.array(t)))
역전파법(Back Propagation)
- 계산 그래프는 계산 과정을 그래프로 그려낸 것, 노드와 엣지로 표현
- 계산 그래프에서 '사과 가격이 오르면 최종 금액에 어떤 영향을 주는가?'에 대해 사과 가격에 대한 지불 금액의 미분을 구해 계산할 수 있다.
https://ratsgo.github.io/deep%20learning/2017/05/14/backprop/ https://excelsior-cjh.tistory.com/171
- Sigmoid
패션 데이터셋을 이용한 실습
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
fashion_mnist = keras.datasets.fashion_mnist
(traing_images, train_labels),(test_images,test_labels) = fashion_mnist.load_data()
traing_images = traing_images/255.0 # 데이터 크기를 정규화 하여 대략적으로 동일하게 맞추는 작업
test_images = test_images / 255.0
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
model = keras.Sequential([
keras.layers.Flatten(input_shape = (28,28)), #2차원인 것을 1차원으로 펴주는
keras.layers.Dense(128,activation = tf.nn.relu),
keras.layers.Dense(10, activation = tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(traing_images, train_labels, epochs = 5)
test_loss, test_acc = model.evaluate(test_images,test_labels)
# predictions = model.predict(test_images)
# print(predictions)
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
pred_label = []
print(test_images.shape)
test = model.predict(test_images)
# np.arg
for i in range(len(test)):
pred_label.append(np.argmax(test[i]))
pred_label = np.array(pred_label)
print(accuracy_score(test_labels, pred_label))
confusion_matrix(test_labels,pred_label)
어느정도 예측을 잘하는 편
'공부 > AI School 인공지능 여름캠프' 카테고리의 다른 글
딥러닝 데이터 변형, 과대적합(Overfitting) & 과소적합(Underfitting), Dropout - [AI School] (0) | 2021.05.04 |
---|---|
딥러닝 심층 신경망 최적화, 기울기소실(Gradient Vanishing) - [AI School] (0) | 2021.05.04 |
딥러닝 텐서플로우 소개 및 기본 사용법 - [AI School] (0) | 2021.05.03 |
딥러닝 시작, 신경망 기초 - [AI School] (0) | 2021.05.03 |
머신러닝 의사결정트리(Decision Tree), 앙상블, 엔트로피 - [AI School] (0) | 2021.05.03 |