인공지능 AI/MLP 8
-
from __future__ import absolute_import, division, print_function, unicode_literals import os import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.utils import Sequence from tensorflow.keras.utils import to_categorical import tensorflow.keras as keras from keras import models from keras import layers from tensorflow.keras.optimizers import SGD %matplotl..
-
이전에 올렸던 Mnist MLP에서 정확도를 높일 수 있는 방법이 무엇인지 알아본다. 우선 optimizer의 경사하강법 함수의 보폭을 r = 0.1 에서 r = 0.01 로 변경해보았다. 정확도가 상승한 것을 확인할 수 있다. 테스트 정확도도 92% 손실값 0.265613 으로 향상된 것을 볼 수 있다. r을 더 줄여서 r = 0.001로 변경해보니 정확도에 큰 차이가 없었다. 속도를 위해 r = 0.01인 것이 낫다는 생각이 들었다. 다시 전체 코드를 원 상태로 만들고, 이번에는 Net class의 ReLU 함수를 두개의 레이어에 대해 적용했다. 원래는 self.fc1에 대한 ReLU 만 작성 되어 있었다. 트레이닝 셋에서 손실값이 0.017782 값으로 눈에 띄게 줄어들었다. 테스트에서는 97%의 ..
-
Mnist 데이터를 다운로드 받아서 불러온다. 배치 사이즈 만큼의 데이터를 iter하고 화면에 표시한다. 이미지를 세부 묘사하면 흑백의 차이를 숫자로 표현한 것이 보인다. 흑과 백이기 때문에 2차원 벡터로 표현 가능하다. MLP의 Net함수와 forward 순방향전파를 나타낸다. 간단하게 선형 연산과 ReLU 함수로 되어있다. 이부분을 조정해서 정확도를 높일 수 있을까? 손실함수와 최적함수이다. 손실함수는 크로스 엔트로피로 나타낸다. 최적함수는 경사하강법으로 보폭은 0.1로 진행한다. 실제로 훈련데이터를 훈련시켜본다. epoch 반복값은 10으로 정했다. 최적함수의 그레디언트 값을 0으로 초기화 한다. 모델 훈련 후 출력값을 받아서 손실함수를 계산한다. 역전파하여 최적함수를 실행시킨다. 모델에 반영한다...
-
-
-
단일노드의 역전파는 다음과 같다. output gradient와 local gradient를 곱한다. x * y = xy 라는 식이 있다. 여기서 out 값인 xy를 x로 미분하면 y, y로 미분하면 x 가 나온다. in1값인 x로 미분하면 in2값인 y 가 나온다. 이 값은 local gradient이다. 0또는 1이 된다. Gradient 에서 x요소가 여러개 y는 하나이다. 스칼라값이 하나 나올때 손실함수를 사용할 수 있다. Jacobian에서 x요소가 여러개 y요소도 여러개이다. 출력이 스칼라형태로 나오지만 중간에 벡터들을 거쳐야 하기 때문에 확장해야 한다. 야코비언과 그레디언트 디센트의 조합으로 구한다. 출력값이 행렬이라도 손실함수는 스칼라 값 하나이다. 입력도 행렬이고 가중치도 행렬이다. 이때..
-
오류역전파 Back Propagation 다층 퍼셉트론은 각 층으로 진행되면서 행렬곱으로 연산이 이뤄진다. 행렬곱과 편향으로 왜곡이 일어난다. 예측값과 실제값의 차이를 손실함수를 통해 낮춰준다. 경사하강법으로 미분값을 통해 새롭게 갱신 목적함수를 최소화하거나 최대화하는 값을 찾는것이 목적이다. 여기서는 최소화시기는 목적함수를 사용하고 거의 배치모드로 사용한다. 기댓값과 실제값의 차이로 이루어진다. 전방 연산은 그래프로 표현할 수 있다. a) 간단한 연산 b) 로지스틱 회귀 : 내적을 구하고 편향을 더한다 c) ReLU activation : matmul을 구하고 편향을 더한다 d) 선형 회귀 부분식이 반복되기 때문에 원하는 위치의 가중치 w값을 연쇄적으로 얻어낼 수 있다. 이 부분식들을 저장하여 재연산을..
-
퍼셉트론 선형 분류기의 한계 XOR 문제에서 75%의 정확도 한계가 있다. 선형분리 불가능한 상황에서 일정한 양의 오류가 생긴다. 다층퍼셉트론 은닉층 Hidden Layer : 은닉층은 원래의 특징공간을 분류하는데 유리한 새로운 특징공간으로 변환한다. 시그모이드 활성함수 Sigmoid : 다층퍼셉트론은 연성 의사결정이 가능한 시그모이드 함수를 활성함수로 활용한다. 연성에서 출력값이 연속값이고, 이것을 신뢰도로 간주한다. 오류 역전파 알고리즘 Back Propagation : 역방향으로 진행하며 한 층씩 그레디언트를 계산하고 가중치를 갱신한다. 퍼셉트론 1, 2 가 모두 +1이면 A공간에 배치된다. 퍼셉트론 2개를 병렬결합하면 원래 공간을 새로운 특징공간 z로 변환 새로운 특징 공간 z에서 선형분리 가능해..