신경망 학습이란?
- 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것
데이터 주도 학습
- 기계학습은 데이터에서 답을찾아서 패턴을 발견하고 데이터로 결론을 도출하는것
MINST :손글씨를 인식하는 머신러닝을 공부하기에 유명한 데이터 셋?
- 손으로 쓴 5라는 것에서 패턴을 찾기란 어렵다.
- 머신러닝이 효율적
- 지도학습을 이용
지도학습이란?
지도 학습 (Supervised Learning)은 훈련 데이터(Training Data)로부터 하나의 함수를 유추해내기 위한 기계 학습(Machine Learning)의 한 방법이다. 훈련 데이터는 일반적으로 입력 객체에 대한 속성을 벡터 형태로 포함하고 있으며 각각의 벡터에 대해 원하는 결과가 무엇인지 표시되어 있다. 이렇게 유추된 함수 중 연속적인 값을 출력하는 것을 회귀분석(Regression)이라 하고 주어진 입력 벡터가 어떤 종류의 값인지 표식하는 것을 분류(Classification)라 한다. 지도 학습기(Supervised Learner)가 하는 작업은 훈련 데이터로부터 주어진 데이터에 대해 예측하고자 하는 값을 올바로 추측해내는 것이다. 이 목표를 달성하기 위해서는 학습기가 "알맞은" 방법을 통하여 기존의 훈련 데이터로부터 나타나지 않던 상황까지도 일반화하여 처리할 수 있어야 한다. 사람과 동물에 대응하는 심리학으로는 개념 학습(Concept Learning)을 예로 들 수 있다. https://ko.wikipedia.org/wiki/%EC%A7%80%EB%8F%84_%ED%95%99%EC%8A%B5
손실함수 (loss Function)
학습을 통해 최적의 가중치 매개변수를 결정하기 위한 지표로 손실함수를 사용한다.
손실함수의 오차값을 가장 적게 만드는 것이 신경망의 학습목표이고
손실함수는 두가지
평균 제곱 오차 (mean squared error, MSE)
Y 는 신경망의 OUTPUT 이다
파이썬 구현 함수
def mean_square_error(y,t=list()):
return np.sum((y-t)**2)/t.size
교차 엔트로피 오차 (Croos Entroypy Error ,CEE)
왜 손실함수를 설정하는가?
숫자 인식의 경우도 우리의 궁극적인 목적은 높은 정확도를 끌어내는 매개변수 값을 찾는 것이다.
신경망 학습에서는 미분의 역활에 주목하야한다.
가상의 신경망이 있고 그 신경망의 어느 한 가중치 매개변수에 주목한다고 할때,
이때 그 가중치 매개변수의 손실함수의 미분이란 '가중치 매개변수의 값을 아주 조금 변화 시켰을때 손실함수가 어떻게 변하나 ?' 라는 의미 이다.
if 미분값이 음수면 그 가중치 매개변수를 양의 방향으로 변화 시켜 손실함수의 값을 줄일수 있다.
but 미분값이 0이면 매개 변수를 어느쪽으로 움직여도 손실함수의 값은 달라지지 않는다.
그래서 그 가중치 매개 변수의 갱신은 거기서 멈춰야한다.
정확도를 지표로 삼으면 미분이 대부분의 장소에서 0이 되버린다.
반면에 손실함수를 지표로 삼는다면 매개변수의 값이 조금 변하면 그에 반응하여 손실 함수의 값도 0.9742.... 처럼 연속적으로 변화 하는 것이다.
계단 미분 함수의 미분은 대부분의 장소에서 0이다 그결과 계단함수를 손실함수 로 사용하면 아무런 효과가 없게 된다.
그렇기에 시그모이드 함수의 미분은 연속적으로 변하고 곡선의 기울기도 연속적으로 변한다