브렌쏭의 Veritas_Garage

[3Blue1Brown] DeepLearning 본문

[Project_하다]/[Project_공부]

[3Blue1Brown] DeepLearning

브렌쏭 2024. 7. 1. 16:31

https://youtu.be/aircAruvnKk?si=9s-i5K7GvkKbQJ7i

 

한번에 대학과정으로 쎄리박는 것보단 친근한 방법 같아서 가져왔다.

3Blue1Brown 인터렉션 방식의 웹 또한 제공한다.

 

총 6개 강의에 각 영상의 길이가 짧아서 슥삭 훑기 좋았다.

 

# 1. 아무리 많은 데이터셋도 모두 지정된 크기의 신경망으로 학습할 수 있다.

신경망 자체를 학습이 키우거나 줄이진 않는다.

Input Layer -> Hidden Layers -> Output Layer

중간의 숨겨진 계층에서는 몇개의 계층이 있을지 모른다. 설정하기 나름

첫번째 계층에서 입력된 기본 정보를 바탕으로 두번째, 세번째 등등 계층에서 보다 복잡한 형태로 서서히 패턴을 추론해간다.

최종적으로 알고싶은 출력레이어는 분류된 결과물이므로 이미 알고 있는 것.

 

Bias & Weight

뉴런들은 각각 다음 뉴런으로 연결될때, 모든 뉴런에 가중치를 부여받고 그 합계 값에 편향치를 더한다.

이때 가중치는 다음 뉴런의 패턴에 얼마나 적합한지,

편향치의 경우 얼마나 확실해야 다음 뉴런으로 전달될지를 지정하는 것이라 생각할 수 있다. (임계값을 정한다)

가중치는 이전 뉴런과의 연관 강도, 편중치는 현 뉴런이 활발하게 다음 뉴런과 연결될지 아니면 무겁게 행동할지 결정한다.

 

Weight 와 Bias가 무작위라면, 최종 출력 계층에서 하나의 출력만 두드러지지 않고 여러 뉴런들이 엇비슷하게 강조될 것이다.

-> 이런 일을 막기 위해서 결과에 따라 Cost Function을 설정해야한다.

-> 분류의 결과는 분류가 잘못되거나 중복된 분류값이 아니라면 하나에만 속해야 한다.

 

Cost Functions

결과는 하나의 뉴런을 제외하고는 0에 가까워야한다.

동시에 하나의 뉴런은 1에 가까워야 한다.

잘못된 출력과 원하는 출력의 차의 제곱을 모두 더한 값을 비용이라고 한다.

 

이 비용은 신경망이 잘 학습되고 잘 작동하고 있다면 값이 0에 가깝다.

-> 평균 비용을 구함으로 얼마나 신경망이 잘 만들어졌는지 평가가 가능하다.
-> 학습된 모든 예시 전체의 각 Cost를 구해서 이것을 최소로 유지해야한다.

최솟값: Cost 의 최솟값을 구해야 해...! <- How?

물론 신경망의 Cost function의 경우, 일단 파라미터가 각 계층의 뉴런의 갯수의 곱에 가중치의 곱 + 편향치의 곱이라는 미친 갯수이므로,

그냥 방정식풀듯이 푸는 것은 너무나 어려운 일이다.

여기서 Gradient Descent가 나오는 것.

 

최소값 -> 전체 최소값과 지역 최소값이 있다.

Global minimum & Local minimum

전체 최소값은 구하기 어렵고 복잡하지만, 지역 최소값의 경우에는 빠르게 구할 수 있는 편

 

기울기, 경사도, Gradient ...

함수의 gradient는 본래 가장 경사가 급한 방향 (= 가장 빠르게 높이 올라가는 방향)을 알려준다.

즉, 음의 gradient 값을 통해 현재 지점에서 가장 가까운 Local Minimum에 도달하는 방향을 알 수 있다.

2차원 입력을 받는 1차원 출력 값만 해도 이런 형태일 것이다.

가중치와 편향치가 각 뉴런을 지나 출력까지 도달하는 경우의 수들을 열 백터로 만들어 음의 gradient를 구하면 된다

-> Cost function의 평균값이 줄어든다

-> 신경망의 예측 결과가 정확해진다 = 모든 입력 데이터셋에 대해 더 나은 결과를 낸다.

 

그런데 이 Gradient를 계산할때 가장 효과적인 알고리즘이 역전파, Backpropagation이다.

Backpropagation

음 결과의 비용을 계산하는 것이니 + 입력부 부터 찾으면 비용의 최소값이 지역최소값인지 전체최소값인지 모를거 같으니 뒤에서 부터 찾는 것인가?

 

Independent of Implementation Details

"구현 세부사항의 독립성" = 신경망 학습이란, 그저 비용을 최소화하는 것이다.

Minimizing Cost Fumctions -> Gradient Descent = 경사하강법

 

Gradient Descent

모든 파라미터에 대해서 최솟값으로 이동하기 위한 결과 = 음 Gradient의 백터가 나온다.

"음 Gradient의 백터" 가 의미하는 바가 무엇인가?

 

  • 각 파라미터당 gradient의 부호는 입력 백터가 커져야할지 작아져야할지 알려준다
  • gradient의 절대값은 각 파라미터가 얼마나 영향력을 가지는 지 알려준다. (가중치와 편향치의 조절로 결과에 큰 영향을 끼친다)
  • 즉, gradient의 방향과 상관없이 값이 큰 녀석을 잘 조정하면 신경망의 예측 결과를 크게 향상시킬 수 있다. 

* MNIST DATASET

http://yann.lecun.com/exdb/mnist/

 

MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges

 

yann.lecun.com

손으로 숫자를 쓴 데이터를 수십만개씩 모아둔 대학원생들의 눈물의 결과물

 

* 학습 결과 측정

학습시킨 데이터셋 대신에 새로운 데이터를 주고 그 정확도를 측정하면 얼마나 잘 학습되었는지 알수있다.

 

* 학습? 가장 확률이 높은 것을 잘 계산하는 것에 가깝다.

의도와 목적을 가지고 행동하는 것이 아니라 각 계층을 지나면서 변칙적인 입력값에 대해 처리를 유도리있게 잘 출력하는 함수의 미적분 계산기에 가까운 느낌이다.

 

* 학습을 통해 분류를 잘하는 것과 반대로 그것을 생성하는 것은 전혀 다른 문제

* Michael Nielsen의 전자책 링크 & Github 링크

Neural networks and deep learning

 

Neural networks and deep learning

 

neuralnetworksanddeeplearning.com

mnielsen/neural-networks-and-deep-learning: Code samples for my book "Neural Networks and Deep Learning" (github.com)

 

GitHub - mnielsen/neural-networks-and-deep-learning: Code samples for my book "Neural Networks and Deep Learning"

Code samples for my book "Neural Networks and Deep Learning" - mnielsen/neural-networks-and-deep-learning

github.com

 

Comments