hmk run dev

딥러닝 이해하기 본문

Deep Learning

딥러닝 이해하기

hmk run dev 2022. 5. 15. 18:14

머신러닝

기계야 학습해봐!

 

머신러닝 종류

 

주어진 데이터 set에 따라 분류할 수 있다

 

Supervised Learning - 데이터에 정답이 있고 정답 예측 모델 만들 때( 사진을 주고 컴퓨터가 인식할 수 있게 하기 등..)

 

Unsupervised Learning - 데이터에 정답이 없을 때 (추천 알고리즘 등..)

 

머신러닝 예시

 

 

인간 러닝

 

6월 9월 성적 각각 반반씩 영향이 있다고 예측

 

6월 점수 x 0.5 + 9월 점수 x 0.5 

 

머신러닝

 

6월 점수 x w1 + 9월 점수 x w2 (w = weight : 가중치) + b(bias : 편향)

 

w값을 예측해야 함

 

컴퓨터에게 w1, w1를 찾으라고 시키자 > 데이터를 주면 됨

 

성적 3개의 레코드 오차는 각각 20, 15, 20이다.

 

컴퓨터에게 오차값이 최소가 나오는 w값들을 찾아 달라고 명령

 

딥러닝

 

히든 레이어를 도입하면 좀 더 정교한 예측이 가능함

 

레이어는 기계가 잠깐 생각을 저장하는 공간이라고 보면 쉽다!

 

 

수능점수 예측 모델로 여러 예시를 살펴보자

 

1. 아래는 각각 성적에 w 가중치를 곱한 후 모두 더해 점수를 예측한 것이다.

너무 쉬운 수준의 예측..!

 

2. 히든 레이어에 중요도를 생각해 각각 점수를 저장하고 w 가중치를 다르게 설정!

> 기계가 계속 학습하면서 가중치를 다르게 하든 개선함

 

손실 함수

 

w값들을 컴퓨터가 찾게 해야 함

실제 계산

 

- 오차를 최소화하는 w값들을 찾게 컴퓨터에게 명령을 내려야 함 

 

- 컴퓨터에게 오차를 알려줘야 함

> 오차 중에 음수가 있을 수 있으니 절댓값 or 제곱을 해서 오차를 sum 해준다.

> 이것을 머신러닝에서 손실 함수(Loss function or Cost Function)이라고 한다.

 

y해쉬는 예측한 점수 그냥 y는 실제 정수 시그마는 다 더하라는 뜻 정수를 예측할 때 많이 사용

 

여기까지 과정에 결함이 하나 있는데

실제로 히든 레이어가 있나 없나 결과가 같다.

 

해결방법

활성 함수 activation function

 

쉽게 말해 히든 레이어에서 활성 함수(sigmoid)를 이용해 값을 한번 변환해 준다.

sigmoid 활성함수 예시

 

활성 함수가 적용이 되면 레이어가 제 역할을 수행하기 시작함

 

경사 하강법

 

랜덤의 w1값으로 시작

 

총손실이 적을수록 좋은 값 > 경사를 타고 왼쪽 아래로 내려가야 함

 

- 손실을 최소화하는 w 값을 찾게 시킴

- 그 방법 중 하나가 경사 하강법

 

1. w 값을 랜덤으로 찍음

2. w 값을 바탕으로 총손실 E를 계산

3. 경사 하강으로 새로운 w값을 업데이트 (반복)

알파는 러닝 레이트(기울기만 빼지말고 러닝 레이트를 곱해서 빼야한다)

 

파이썬 코드로 대강 표시해보면 아래와 같다.

 

러닝 레이트

 

왼쪽 그래프 같이 기울기가 0이 되면서 최적의 값을 찾기 전에 프로그램이 종료될 수 있다.

이를 방지하기 위해 러닝 레이트 사용해야 한다.

 

기울기만 빼지말고 러닝 레이트를 곱해서 빼야 한다.

러닝 레이트는 임의로 설정 가능(보통 0.01 등 작은 숫자로 설정)

 

러닝 레이트 옵티마이저

- 학습 중간중간 러닝 레이트를 어떤 식으로 수정해주는 알고리즘

 

 

출처

https://www.youtube.com/watch?v=U57LVkQVf4o&list=PLfLgtT94nNq1DrREU_qG2w4yd2ZzJb-FG&index=2 

 

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

Tensorflow 가설 정의, 손실함수 정의, 최적화 정의  (0) 2022.05.14
딥러닝의 개념  (0) 2022.05.13
Comments