본문 바로가기
Deep Learning/Others

[파이썬 딥러닝 파이토치] PART01, 02

by 꿈꾸는 띵땅근 2021. 6. 29.

인공지능 Overview

- Machine Learning

- Deep Learning

 

→ Image Classification : ResNet(2015)

→ Object Detection 

→ TTS, STT : Attention Is All You Need(2017) 

→ RL 

→ GAN(Generative Adversarial Networks)(2014) : 데이터 예측 → 데이터 생성

BIgGAN(2018)

input : random noise, output : 임의의 이미지

ex) 옛날사람 얼굴 복원 - input : Noise, output : 옛날 사람 얼굴. 

→ Style transfer : CycleGAN(2017)

→ Deepfake

 

 

* VGG와 같이 학습 파라미터가 많은 모델은 과적합 문제가 발생할 수 있다. 

-> 과적합 되면 학습에 이용된 데이터에 대해서는 Task 잘 수행하지만, 이용되지 않은 새로운 데이터에 대해서는 잘 못한다. 

-> 즉, 파라미터 많을수록 좋은게 아니다. 

-> 일반화(Normalization) 과정이 필요하다. 

-> 일반화 : weight decay, dropout, batch normalization 등

 

* 엄청 많은 수의 파라미터를 계산하기에는 GPU가 좋다. 

-> 대다수의 딥러닝 프레임워크(Tensorflow, PyTorch 등)를 이용하려면 GPGPU(General Purpose computing on Graphics Processing Units)인 CUDA를 설치해야 한다. 

-> cuDNN은 nvidia CUDA Deep Neural Network Library. 딥러닝 모델을 위한 GPU 가속화 라이브러리의 기초 요소와 같은 일반적인 루틴을 빠르게 이행할 수 있도록 해주는 라이브러리. 

 

 

BATCH_SIZE : 파라미터를 업데이트할 때 계산되는 데이터의 갯수

INPUT_SIZE : 입력층의 노드 수. 

 


*머신러닝

- 지도학습

- 비지도학습

 

* 변수가 많을수록 과적합 : 회의모델의 학습데이터에 대한 성능은 높아지고, 학습하지 않는 데이터에 대해 성능이 낮아짐.

-> 회귀모델이 지니고 있는 학습의 특성때문인데, 여러가지 변수에 영향을 받아 결과가 예측되면, 하나의 변수에 대해서만 예측을 했을때는 그 영향력이 낮아진다. 즉, 딱 셋팅된 그 상황에서만 잘 되는거다. 

예를들어) 키와 발 크기에 따라 몸무게를 예측하면, 아주 기가막히게 잘 되는데, 키따로 발 따로 각각 독립적으로 몸무게를 예측하면 잘 안됨. 또는, 키, 눈크기, 손톱길이, 피부색, 머리색 등

-> 이 문제를 완화시키는게 회귀 계수 축소 모델(Shrinkage Regression Model) : MSE를 축소시키는것 + 회귀 계수 자체도 축소하도록 Loss 구성. 

-> 내가 이해한 바로는, 데이터를 좀 더 잘 표현할 수 있는 차원 축소의 개념인 것 같다. 

 

 

*과적합

- 모집단 전체 데이터가 없고, 샘플 데이터만 갖고있기 때문에 전체를 잘 분류할 수 있는 모델을 만들기 어렵다. 

- 데이터가 적을수록 이런 문제가 발생한다. 

- 데이터 자체가 편향되어 있을 수록 이런 문제가 발생한다. 

-> 학습이 잘 되었는지 어떻게 판단할 것인가?

 

* 적합성 평가

- 학습데이터 : 검증 데이터 : 테스트 데이터 = 4 : 3 : 3

- 검증 데이터(어느정도 알고있는 데이터) - 사용자가 지정해야 할 다양한 파라미터를 '하이퍼 파라미터' 라고 하는데, 검증데이터가 성능지표를 보면서 최적의 파라미터를 선택한다. 즉, 우리가 만든 모델의 파라미터를 설정해 검증하는 용도로 사용한다. 

- 테스트 데이터(아예 모르는 데이터) - 실제 테스트용. 

-> 이렇게 나누기도 힘든, 적은 데이터다 :  k-FOLD Cross Validation

K(hyper param) 개로 fold를 나누고, 하나만 validation data고, 나머지는 학습. 이거를 K번 반복. 즉, 모든 데이터가 validation도 되었다가 training도 됨. 


인공 신경망(Neural Network)

* 퍼셉트론

'sigma(wi*xi) + b' 를 Activation Fuction으로 분류해서 1 또는 0으로 선형분류. 1차원적인 문제(모 아니면 도) 밖에 풀지 못함. 

input - output layer 2개의 layer가 끝. 

한계를 극복하여 비선형 문제를 풀기 위해 MLP가 등장함. 

 

 

*MLP

퍼셉트론의 한계를 극복. 여러 Layer를 쌓음. 중간에 hidden layer 존재

hidden layer와 hidden node는 사용자가 정하는 하이퍼 파라미터. 

output layer의 node 수는 분류하고자 하는 class 갯수만큼이다. 회기분석의 경우 output node 하나이고,, 1~10까지 분류하고 싶은 모델이라면 output node 10개다. 

 

* Feed Forward

Input -> weight, hidden -> Output

 

* Back Propagation

Feed forward를 통해 output 계산하고, 실제 값과의 차이를 Error로 설정. 

뒤의 weight부터 업데이트해서 차차 앞으로. 그래서 '역전파'

 

*Epoch

Feed Forward + Back Propagation 몇번했냐. 횟수. 

 

*Mini-Batch, iteration

데이터가 정말 많을 때, 이것을 한번에 ram에 집어넣으면, 효율도 안좋고, 램 용량을 너무 잡아먹는다. 그래서 batch size로 데이터를 나눈다. 

ref:https://losskatsu.github.io/machine-learning/epoch-batch/#4-iteration%EC%9D%98-%EC%9D%98%EB%AF%B8

iteration은 미니배치가 forward + back propagate 한번 왓다리 갓다리 하는게 iteration이고, 

위의 예제에서는 7번 왓다리 갓다리 하면 1epoch가 수행되는거다. 

 

* Normalization : MinMax / Z-score 

0. 정규화

- 데이터에는 여러가지 feature가 있다.

- 데이터를 구분짓기 위해서는 수식이 필요하고, 이 수식은 feature들을 독립변수로 하는 수식이다. 

- feature들이 동등하지 않은 경우가 있다. 이걸 동등하게 맞춰주기 위한 작업이 Normailization

eg) 난 90점을 맞았고(1000점만점) 넌 80점을 맞았으니(100점만점) 내가 공부 더 잘해. (False)

 

1. MinMax

- (X-MIN)/(MAX-MIN)

- 이상치에 많은 영향을 받음

 

2. Z-score

- (X-mean)/sigma

- MinMax의 문제 해결

ref : https://hleecaster.com/ml-normalization-concept/

 

 

 

 

질문


1. 왜 Linear 함수로 regression하는가? 그리고 Wx + b 의 W와 b가 학습 파라미터인가?

 

2. Validation dataset으로 정확하게 무엇을 하는것인가?

 

3. 신호 및 시스템에서 Convolution의 의미는?

 

4. 커널 사이즈가 크고 작은것의 차이는 무엇인가?

 

5. Convolution Layer가 점차 깊어질수록 어떤 특징을 검출하고, 얕을수록 어떤 특징들을 검출하는가?

 

 

 

 

 

 

 

댓글