머신러닝 모델은 크게 트레이닝 과정과 테스트 과정으로 나뉜다.

▷ 트레이닝 과정 - 대량의 데이터와 충분한 시간을 들여 모델의 최적 파라미터를 찾음

▷ 테스트 과정 - 트레이닝 과정에서 구한 최적의 파라미터로 구성한 모델을 트레이닝 과정에서 보지 못한 새로운 데이터에 적용하여 모델이 잘 학습됐는지 테스트하거나, 실제 문제를 풀기 위해 사용

 

Data의 종류 = <Training Data, Validation Data, Test Data>

 

Validation Data

: 트레이닝 과정 중간에 사용하는 테스트 데이터

 

☞ 필요한 이유? 

트레이닝 과정에서 학습에 사용하지는 않지만 중간중간 테스트하는데 사용해서 학습하고 있는 모델이 Overfitting에 빠지지 않았는지 체크하기 위해서

 

 

Overfitting(과적합)?

: 트레이닝 데이터에 대한 에러는 작아지지만 검증용 데이터에 대한 에러는 커지는 현상

즉, 트레이닝 데이터에만! 초점이 맞춰서 학습이 된 경우이다. 따라서 학습한 데이터에 대해서는 오차가 감소하지만 실제 데이터에 대해서는 오차가 증가하게 된다.

 

출처 https://kite-mo.github.io/machine%20learning/2020/03/10/bOverfitting/

 

따라서 트레이닝 에러는 작아지지만 검증 에러는 커지는 지점에서 업데이트를 중지하면 최적의 파라미터를 얻을 수 있다.

 

'Study > Deep Learning' 카테고리의 다른 글

TensorFlow  (0) 2021.10.15
다양한 Computer Vision 문제 영역  (0) 2021.10.14
머신러닝 기본 프로세스  (0) 2021.10.14
딥러닝의 응용분야  (0) 2021.10.13
머신러닝/딥러닝 기초  (0) 2021.10.13

<머신러닝의 기본 프로세스 - 가설 정의, 손실함수 정의, 최적화 정의 >

① 학습하고자 하는 가설(Hypothesis) h(θ) 을 수학적 표현식으로 나타낸다

② 가설의 성능을 측정할 수 있는 손실함수(Loss Function) J(θ)을 정의한다

③ 손실함수 J(θ)을 최소화(Minimize)할 수 있는 학습 알고리즘을 설계한다

 

 

 

1. 가설 정의

ex) 선형 회귀 모델

y = Wx + b

 

x = 인풋 데이터  /  y = 타겟 데이터  / W와 b는 파라미터(θ) 

 

 

 

 

2. 손실함수 정의

: 적절한 파라미터 값을 알아내기 위해 이 과정이 필요

 

ex) 평균제곱오차(Mean of Squared Error, MSE)

사진출처 https://dailyheumsi.tistory.com/167

 yi = 정답값

y^i = 예측값

 

모델의 예측값이 정답과 멀다면 MSE 손실함수는 큰 값을 가지게 되고 정답에 가깝다면 MSE 손실함수는 작은 값을 갖게 됨

 

이처럼 손실 함수는 우리가 풀고자 하는 목적에 가까운 형태로 파라미터가 최적화 되었을 때(모델이 잘 학습되었을 때) 더 작은 값을 갖는 특성을 가짐

 

따라서 손실함수를 "비용 함수(Cost Function)"라고도 부름

 

 

 

 

3. 최적화 정의

최적화Optimization 기법 = 파라미터를 적절한 값으로 업데이트 하는 알고리즘

대표적인 기법 = Gradient Descent (경사하강법)

 

Gradient Descent

출처 https://codingslime.tistory.com/18

: 현재 스텝의 파라미터W에서 손실함수(cost)의 미분값에 러닝레이트(Learning rate) α 를 곱한만큼을 빼서 다음 스텝의 파라미터 값으로 지정

 

+ 학습률(Learning rate) = W에 변화를 주는 정도

 

 

따라서 손실 함수의 미분값이 크면 하나의 스텝에서 파라미터가 많이 업데이트 되고

손실 함수의 미분값이 작으면 적게 업데이트 됨

 

또한 러닝레이트α 가 크면 많이 업데이트되어 반복횟수가 줄어들고

러닝레이트α 가 작으면 적게 업데이트되어 반복횟수가 늘어난다.

 

출처 https://www.skyer9.pe.kr/wordpress/?p=437

 

+ Batch Gradient Descent, Stochastic Gradient Descent, Mini-Batch Gradient Descent

위에서 살펴봤던 경사하강법은 

 

트레이닝 데이터 n개의 손실함수 미분값을 모두 더한 뒤 평균을 취해서 파라미터를 한 스텝 업데이트 하는 방법이었다.

이런 방법을 전체 트레이닝 데이터를 하나의 Batch로 만들어 사용하기 때문에 Batch Gradient Descent 라고 부른다.

---> 트레이닝 데이터가 많아지면 파라미터를 한 스텝 업데이트하는데 많은 시간이 걸린다는 단점이 있다!

 

 

이와 반대로, Stochastic Gradient Descent 방법은 1개의 트레이닝 데이터만 사용하는 기법이다.

---> 파라미터를 자주 업데이트할 수 있지만 전체 트레이닝 데이터의 특성을 고려하지 않고 각각의 트레이닝 데이터의 특성만을 고려하므로 부정확한 방향으로 업데이트가 진행될 수 있다.

 

 

따라서, 실제 문제를 해결할 때는 이 둘의 절충적 기법인 Mini-Batch Gradient Descent 를 많이 사용한다.

전체 트레이닝 데이터 Batch가 1000(n)개라면 이를 100(m)개씩 묶은 Mini-Batch 개수만큼의 손실 함수 미분값 평균을 이용해서 파라미터를 한 스텝 업데이트 하는 기법이다.

 

 

'Study > Deep Learning' 카테고리의 다른 글

다양한 Computer Vision 문제 영역  (0) 2021.10.14
머신러닝 Data 종류  (0) 2021.10.14
딥러닝의 응용분야  (0) 2021.10.13
머신러닝/딥러닝 기초  (0) 2021.10.13
수치 미분  (0) 2020.11.06

<딥러닝 알고리즘의 주요 응용분야>

① Computer Vision

: 컴퓨터가 인간의 시각 기능을 수행할 수 있도록 하는 방법을 연구하는 분야

 

☞ 이미지 분류(Image Classification), Semantic Image Segmentation, 물체 검출(Object Detection) 등

딥러닝 여러 구조 중 CNN 구조가 많이 사용됨

 

ex) 테슬라 자동차의 Autopilot → 자율주행 기능. 주변 물체 감지를 통해 교통사고 발생률 줄임

 

 

② Natural Language Processing(NLP), 자연어 처리

: 컴퓨터가 인간의 언어처리 기능을 수행할 수 있도록 하는 방법을 연구하는 분야

 

☞ 문장 분류(Text Classification), 이미지 캡셔닝(Image Captioning), 기계 번역(Machine Translation), 챗봇(Chatbot) 등

딥러닝 여러 구조 중 RNN 구조가 많이 사용됨

 

ex) Google의 Duplex → 음성 가상 비서. 

 

 

③ Speech Recognition, 음성인식

: 컴퓨터가 인간의 음성인식 능력을 수행할 수 있도록 하는 방법을 연구하는 분야

 

☞ 음성 데이터가 표현하는 문장이 무엇인지를 인식(Speech To Text, STT)

 

ex) 애플 Siri, 구글 Now, 마이크로소프트 Cortana, 안드로이드 Bixby / 가정용 인공지능 스피커

 

 

④ Game

: 게임(시뮬레이션) 환경을 이용해서 인공지능 기술 발전을 연구하는 분야

(인공지능의 성능, 범용성 등을 측정하기 위해서 사용됨)

 

사용되는 대표적 머신러닝 알고리즘은 강화학습이며, 최근에는 DQN 기법이 많이 주목받고 있음

 

ex) 알파고 : 어려운 문제 해결 능력 / OpenAI Five : 전투봇. 복잡한 문제 환경 속 해결 능력

 

 

⑤ Generative Model, 생성모델

: 학습 데이터의 분포를 학습해서 학습한 분포로부터 새로운 데이터를 생성하는 방법을 연구하는 분야

 

ex) BEGAN : 새로운 얼굴 데이터 생성 / Deepfake : 원본 영상의 얼굴을 다른 사람으로 대체

 

 

'Study > Deep Learning' 카테고리의 다른 글

머신러닝 Data 종류  (0) 2021.10.14
머신러닝 기본 프로세스  (0) 2021.10.14
머신러닝/딥러닝 기초  (0) 2021.10.13
수치 미분  (0) 2020.11.06
신경망 학습  (0) 2020.11.06

1. 인공지능(Artificial Intelligence)

: 컴퓨터가 인간과 같이 생각할 수 있도록 만드는 기법을 연구하는 학문

 

2. 머신러닝(Machine Learning)

:: 데이터에 기반한 학습을 통해 인공지능을 구현하는 기법

:: "명시적인 프로그래밍 없이 데이터를 이용해서 컴퓨터가 어떤 지식이나 패턴을 학습하는 것"

:: "어떤 문제(Task)에 관련된 경험(Experience)으로부터 성과 측정 지표(Performance Measure)를 가지고 학습(Learn)을 진행하는 컴퓨터 프로그램  → 이때, T에 대한 성과는 P로 측정, E로부터 개선을 진행

 

<머신러닝 알고리즘의 3가지 분류>

① 지도학습(Supervised Learning)

: 정답 데이터가 존재하는 상황에서 학습하는 알고리즘

: 입력 데이터 x와 그에 대한 정답 레이블 y의 쌍 (x,y)를 이용해서 학습하는 알고리즘

: 목적 = 어떤 값에 대한 예측을 수행

 

이렇게 학습이 끝난 모델을 이용해서 결과값을 예측할 수가 있다.

1. 분류 문제(Classification) : 예측하는 결과값이 이산값(Discrete Value)인 문제(답이 딱딱 정해진, 분리된)

2. 회귀 문제(Regression) : 예측하는 결과값이 연속값(Continuous Value)인 문제(이렇게 계속 진행된다면 답은 ~일 것임)

 

딥러닝에서 지도학습 방법론으로 주로 사용되는 구조는 CNN(Convolutional Neural Networks), RNN(Recurrent Neural Networks) 이다.

 

② 비지도학습(Unsupervised Learning) 

: 정답 레이블 y 없이 입력 데이터 x만을 이용해서 학습하는 알고리즘

: 목적 = 데이터의 숨겨진 특징을 찾아내는

: 단독으로 사용하기 보다는 지도학습의 인풋 데이터로서 활용하여 지도학습의 성능을 끌어올리는 용도로 사용!

 

대표적인 방법론으로는 주성분 분석 Principal Component Analysis(PCA)이 있고

딥러닝에서 비지도학습 방법론으로 주로 사용되는 구조는 오토인코더 Autoencoder가 있다.

 

③ 강화학습(Reinforcement Learning)

: 에이전트(Agent)가 주어진 환경(State)에서 어떤 행동(Action)을 취하고 이에 대한 보상(Reward)를 얻으면서 학습을 진행

→ 이때, 에이전트는 보상을 최대화하도록 학습을 진행, 동적인 상태에서 데이터를 수집

: 대표적인 예시 = 알파고

 

대표적 알고리즘으로는 Q-Learning이 있고

최근에는 Q-Learning + 딥러닝 = DQN(Deep Q-Netwok) 기법을 많이 활용

 

 

3. 딥러닝(Deep Learning)

: 머신러닝 기법 중 하나인 인공신경망(Artificial Neural Networks) 기법의 은닉층(Hidden Layer)을 깊게 쌓은 구조를 이용해 학습하는 기법

 

장점?

- 데이터의 특징을 단계별로 추상화를 높여가면서 학습할 수 있음 ="표현 학습(Representation Learning)"

(ex : 얕은 은닉층에선 점,선,면과 같은 특징 학습 --> 깊은 은닉층에선 눈,코,입과 같은 특징 학습)

☞ 따라서 사람과 같은 고차원적 인지 활동을 수행할 수 있음

 

 

+) 딥러닝 알고리즘을 가능하게 만든 3가지 환경적 요인?

① 빅데이터(Big Data)를 구할 수 있는 환경이 조성됨

② GPU의 발전으로 컴퓨팅 환경이 개선됨

③ 새로운 알고리즘의 등장으로 딥러닝 모델을 더 잘 학습시킬 수 있게 됨

 

 

 

'Study > Deep Learning' 카테고리의 다른 글

머신러닝 Data 종류  (0) 2021.10.14
머신러닝 기본 프로세스  (0) 2021.10.14
딥러닝의 응용분야  (0) 2021.10.13
수치 미분  (0) 2020.11.06
신경망 학습  (0) 2020.11.06

미분

미분은 '특정 순간'의 변화량이며, 수식은 다음과 같다.

함수의 미분

이는 결국 x의 '작은 변화'가 함수 f(x)를 얼마나 변화시키느냐를 의미한다. 

이때 시간의 작은 변화, 즉 시간을 뜻하는 h를 한없이 0에 가깝게 한다는 의미를 lim h->0 로 나타낸다.

 

# 나쁜 구현 예
def numerical_diff(f,x):
    h = 10e-50 # 작은 값. 이 방식은 결국 반올림 오차 문제를 일으키게 된다.
    return (f(x+h) - f(x)) / h

함수 f의 차분 문제도 있다. 

'진정한 미분'x 위치의 함수의 기울기(접선)에 해당하지만, 이번 구현에서의 미분은 (x+h)와 x 사이의 기울기에 해당한다.

 

def numerical_diff(f,x):
    h = 1e-4 #0.0001
    return (f(x+h) - f(x-h)) / (2*h)

문제점들을 해결한 코드이다.

 

 

편미분

여기선 변수가 2개이기 때문에 '어느 변수에 대한 미분이냐', 즉 x0과 x1 중 어느 변수에 대한 미분이냐를 구별해야 한다.

편미분은 변수가 하나인 미분과 마찬가지로 특정 장소의 기울기를 구한다. 

단, 여러 변수 중 목표 변수 하나에 초점을 맞추고 다른 변수는 값을 고정한다. 

 

 

위 글은 「밑바닥부터 시작하는 딥러닝」을 참고하여 작성한 글입니다.

'Study > Deep Learning' 카테고리의 다른 글

머신러닝 Data 종류  (0) 2021.10.14
머신러닝 기본 프로세스  (0) 2021.10.14
딥러닝의 응용분야  (0) 2021.10.13
머신러닝/딥러닝 기초  (0) 2021.10.13
신경망 학습  (0) 2020.11.06

여기서 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다.

 

데이터 주도 학습

기계학습의 중심에는 데이터가 존재한다. 

기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴을 찾으려 시도한다.

그런 방법의 하나로, 이미지에서 특징(feature)을 추출하고 그 특징의 패턴을 기계학습 기술로 학습 하는 방법이 있다.

여기서 말하는 특징은 입력 데이터(입력 이미지)에서 본질적인 데이터(중요한 데이터)를 

정확하게 추출할 수 있도록 설계된 변환기를 가리킨다.

이미지의 특징은 보통 벡터로 기술하고, 컴퓨터 비전 분야에서는 SIFT, SURF, HOG 등의 특징을 많이 사용한다.

 

이와 같은 기계학습에서는 모아진 데이터로부터 규칙을 찾아내는 역할을 '기계'가 담당한다.

다만, 이미지를 벡터로 변환할 때 사용하는 특징은 여전히 '사람'이 설계한다.

 

딥러닝을 종단간 기계학습(end-to-end machine learning)이라고도 한다. 

데이터(입력)에서 목표한 결과(출력)를 사람의 개입 없이 얻는다는 뜻을 담는다.

 

 

훈련 데이터와 시험 데이터

기계학습 문제는 데이터를 훈련 데이터시험 데이터로 나눠 학습과 실험을 수행하는 것이 일반적이다.

우선 훈련 데이터만으로 학습하며 최적의 매개변수를 찾는다.

그런 다음 시험 데이터를 사용하여 앞서 훈련한 모델의 실력을 평가한다.

 

범용 능력은 아직 보지 못한 데이터(훈련 데이터에 포함되지 않는 데이터)로도 문제를 올바르게 풀어내는 능력이다.

이 능력을 획득하는 것이 기계학습의 최종 목표다.

 

데이터셋 하나로만 매개변수의 학습과 평가를 수행하면 올바른 평가가 될 수 없다.

(예: 한 사람의 글씨체만 학습하는 경우) 

한 데이터셋에만 지나치게 최적화된 상태를 오버피팅overfitting 이라고 한다.

오버피팅을 피하는 것도 기계학습의 중요한 과제다.

 

 

손실 함수

신경망 학습에서는 현재의 상태를 '하나의 지표'로 표현한다.

그리고 그 지표를 가장 좋게 만들어주는 가중치 매개변수의 값을 탐색한다.

신경망 학습에서 사용하는 지표는 손실 함수 loss function 라고 한다.

이 손실 함수는 임의의 함수를 사용할 수도 있지만 

일반적으로는 오차제곱합교차 엔트로피 오차를 사용한다.

 

 

오차제곱합

가장 많이 쓰이는 손실 함수는 오차제곱합 sum of squares for error, SSE 이다.

(yk는 신경망의 출력(신경망이 추정한 값), tk는 정답 레이블, k는 데이터의 차원 수)

 

>>> y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]
>>> t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]

y는 소프트맥스 함수의 출력이다. 소프트맥수 함수의 출력은 확률로 해석할 수 있다.

이 예에서는 이미지가 2일 확률이 확률이 가장 높다고 해석할 수 있다.

t에서 나타낸 것처럼 한 원소만 1로 하고 그 외에는 0으로 나타내는 표기법을 원-핫 인코딩이라 한다.

 

import numpy as np

t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0] # 정답은 2
y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0] # '2'의 확률이 가장 높다고 추정함

def sum_squares_error(y,t):
    return 0.5 * np.sum((y-t)**2)

>>> sum_squares_error(np.array(y),np.array(t))
0.097500000000000031

한편, t는 그대로 두고 y가 '5'일 확률이 가장 높다고 추정한다면

>>> y= [0.1, 0.05, 0.05, 0.0, 0.6, 0.1, 0.0, 0.1, 0.0, 0.0] # '5'일 확률이 가장 높다고 추정함
>>> sum_squares_error(np.array(y),np.array(t))
0.6475

첫 번째 예의 손실 함수 쪽 출력이 작으며 정답 레이블과의 오차도 작다는 것을 알 수 있다.

즉, 오차제곱합 기준으로는 첫 번째 추정 결과가(오차가 더 작으니) 정답에 더 가까울 것으로 판단할 수 있다.

 

 

교차 엔트로피 오차

또 다른 손실 함수로서 교차 엔트로피 오차 cross entropy error, CEE 도 자주 이용한다.

 

(log는 밑이 e인 자연로그, yk는 신경망의 출력, tk는 정답 레이블)

실질적으로 정답일 때의 추정(tk가 1일 떄의 yk)의 자연로그를 계산하는 식이다.

자연로그 y=logx 의 그래프

정답에 해당하는 출력이 커질수록 0에 다가가다가, 그 출력이 1일 때 0이 된다.

반대로 정답일 때의 출력이 작아질수록 오차는 커진다.

 

def cross_entropy_error(y,t):
    delta = 1e-7
    return -np.sum(t*np.log(y+delta))

 

여기서 np.log를 계산할 때 아주 작은 값인 delta를 더했다. 이는 np.log()함수에 0을 입력하면 마이너스 무한대를 나타내는 -inf가 되어 더 이상 계산을 진행할 수 없게 되기 때문이다.

즉, 마이너스 무한대가 발생하지 않도록 한 것이다.

 

>>> cross_entropy_error(np.array(y),np.array(t)) # 정답
0.510825457099338
>>> cross_entropy_error(np.array(y),np.array(t)) # 정답 X
2.9957302735559908

위 코드(오차제곱합)의 예시와 똑같이 적용한 결과이다. 

결과(오차 값)가 더 작은 첫 번째 추정이 정답일 가능성이 높다고 판단한 것으로, 앞서 오차제곱합의 판단과 일치하다.

 

미니배치 학습

딥러닝은 훈련 데이터를 이용해 학습하면서, 훈련 데이터에 대한 손실함수의 값을 구하고 그 값을 최소로하는 매개변수(가중치, 편향)를 찾아내는 것이다. 이를 위해서는 모든 훈련 데이터를 대상으로 손실함수 값을 구해야 한다. 보통 딥러닝은 미니배치(Mini-batch) 학습을 하기때문에 미니배치 크기만큼의 데이터에 대한 각각의 손실함수를 구해 평균을 내어 '평균 손실 함수'를 계산한다.

(N은 미니배치 크기,  tnk는 n번째 데이터의 k차원째의 값)

이는 데이터 하나에 대한 손실 함수를 단순히 N개의 데이터로 확장한 것이고, 마지막에 N으로 나누어 정규화하고 있다.

N으로 나눔으로써 '평균 손실 함수'를 구하는 것이다.

 

빅데이터 수준이 되면 훈련 데이터가 수천만개도 넘는 거대한 값이 된다. 

이런 경우 데이터 일부를 추려 전체의 '근사치'로 이용할 수 있다. 

신경망 학습에서도 훈련 데이터로부터 일부만 골라 학습을 수행한다. 이 일부를 미니배치라고 한다. 

 

미니배치 학습을 하는 코드를 구현해보자.

 

import sys, os
sys.path.append(os.pardir)  # 부모 디렉터리의 파일을 가져올 수 있도록 설정
import numpy as np
import matplotlib.pyplot as plt
from dataset.mnist import load_mnist
from two_layer_net import TwoLayerNet

# 데이터 읽기
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True)

print(x_train.shape) #(60000,784)
print(t_train.shape) #(600000,10)

(load_mnist는 MNIST 데이터셋을 읽어오는 함수. 이 함수는 훈련 데이터와 시험 데이터를 읽음.

호출할 때 원-핫 인코딩으로 호출)

 

MNIST 데이터를 읽은 결과, 훈련 데이터는 60,000개고, 입력 데이터는 784(28x28)열인 이미지 데이터임을 알 수 있다.

또, 정답 레이블은 10줄짜리 데이터이다.

 

train_size = x_train.shape[0]
batch_size = 10
batch_mask = np.random.choice(train_size,batch_size)
x_batch = x_train[batch_mask]
t_batch = t_train[batch_mask]

 

np.random.choice() 로는 지정한 범위의 수 중에서 무작위로 원하는 개수만 꺼낼 수 있다.

이 함수가 출력한 배열을 미니배치로 뽑아낼 데이터의 인덱스로 사용하면 된다.

 

 

(배치용) 교차 엔트로피 오차 구현하기

def cross_entropy_error(y,t):
    if y.ndim == 1:
        t = t.reshape(1, t.size)
        y = y.reshape(1, y.size)
        
    batch_size = y.shape[0]
    return -np.sum(t*np.log(y + 1e-7)) / batch_size

 

(y는 신경망의 출력, t는 정답 레이블)

y가 1차원이라면,  즉 데이터 하나당 교차 엔트로피 오차를 구하는 경우는 reshape 함수로 데이터의 형상을 바꾼다.

그리고 배치의 크기로 나눠 정규화하고 이미지 1장당 평균의 교차 엔트로피 오차를 계산한다.

 

정답 레이블이 원-핫 인코딩이 아니라 '2'나 '6' 등의 숫자 레이블로 주어졌을 때의 교차 엔트로피 오차는 다음과 같이 구현한다.

def cross_entropy_error(y,t):
    if y.ndim == 1:
        t = t.reshape(1, t.size)
        y = y.reshape(1, y.size)
        
    batch_size = y.shape[0]
    return -np.sum(np.log(y[np.arange(batch_size),t] + 1e-7)) / batch_size

 

 

왜 손실 함수를 설정할까?

이 의문은 신경망 학습에서의 '미분'의 역할에 주목하면 해결된다. 

신경망 학습에서는 최적의 매개변수(가중치와 편향)를 탐색할 때 손실 함수의 값을 가능한 한 작게 하는 매개변수 값을 찾는다.

이때 매개변수의 미분(기울기)을 계산하고, 그 미분 값을 단서로 매개변수의 값을 서서히 갱신하는 과정을 반복한다. 

미분 값이 양수나 음수면 매개변수를 변화시켜 손실 함수의 값을 줄일 수 있다.

그러나 미분 값이 0이면, 가중치 매개변수를 어느 쪽으로 움직여도 손실 함수의 값은 줄어들지 않는다.

그래서 가중치 매개변수의 갱신은 거기서 멈춘다.

 

정확도를 지표로 삼아서는 안되는 이유는 미분 값이 대부분의 장소에서 0이 되어 매개변수를 갱신할 수 없기 때문이다.

 

한 신경망이 100장 중 42장을 올바로 인식한다고 하면 정확도는 42%다. 매개변수를 약간만 조정해서는 정확도가 개선되지 않고 일정하게 유지된다. 그러나, 손실 함수를 지표로 삼을 때는 매개변수 값이 조금 변하면 그에 반응하여 손실 함수의 값도 연속적으로 변화한다. 

 

 

위 글은 「밑바닥부터 시작하는 딥러닝」을 참고하여 작성한 글입니다.

'Study > Deep Learning' 카테고리의 다른 글

머신러닝 Data 종류  (0) 2021.10.14
머신러닝 기본 프로세스  (0) 2021.10.14
딥러닝의 응용분야  (0) 2021.10.13
머신러닝/딥러닝 기초  (0) 2021.10.13
수치 미분  (0) 2020.11.06

+ Recent posts