데이터과학 기초-(10)다층 퍼셉트론과 딥 러닝

Coding_Holic·2021년 7월 7일
0

데이터 과학 기초

목록 보기
9/13

다층 퍼셉트론과 딥러닝

강화 학습과 딥 러닝

강화 학습: Reinforcement Learning

-행동(action)에 따른 보상(reward)을 줌으로써,
-보상을 극대화하기 위해 동적으로 학습을 하며 행동을 조정함

딥러닝: Deep(Reinforcement) Learning

-DNN(Deep Neural Network)을 이용한 강화 학습 방법
-DNN = MLP + Backpropagation

역전파: Back Propagation

출력값과 실제값의 오차를 역으로 전달하여 학습하는 방법

합성곱 신경망: CNN, Convolutional Neural Networ

주로 이미지 인식에 많이 사용되는 심층 신경망
합성곱층과 풀링층을 반복적으로 조합해서 다층 신경망을 구성
-Convolutional Layer: 입력 이미지에 필터를 적용하여 활성 함수를 반영
-Pooling Layer: 합성곱층의 출력 크기를 줄이거나 특정 데이터를 강조

순환 신경망: RNN, Recurrent Neural Network

필기체 인식이나 음성 인식과 같은 시계열 응용에 많이 사용되는 심층 신경망
순환적 구조를 가지고 있어서 신경망 내부에 상태를 저장할 수 있게 해 줌
LSTM: Long Short-Term Memory
-망각 게이트를 추가해서 장기 기억과 단기 기억을 가질 수 있음

가중치의 편차와 강화 학습:SGD,L-BFGS-B,Adam

SGD: Stochastic Gradient Descent
L-BFGS-B: Limited-memory BFGS extended
-비선형 최적화 알고리즘:nonlinear optimization
-L-BFGS: quasi-Newton 방법인 BFGS의 Limited Memory 버전
Adam: Adaptive Moment Estimation
-AdaGrad(Adaptive Gradient): 경사 하강을 할 때 step size를 다르게 설정
-Momentum: 경사 하강을 하는 과정에 일종의 관성을 주는 방법
-Adam: 위 두 가지를 동시에 적용하는 최적화 방법

확률적 경사 하강법: Stochastic Gradient Descent

-Batch GD: 손실 함수를 계산할 때 전체 훈련 데이터셋(batch)을 사용
-Mini-Batch GD: 전체 데이터 대신 mini-batch로 손실 함수 계산
-Stochastic GD: Mini-Batch에 확률을 도입해서 손실 함수 계산

배치와 에포크: Batch and Epoch

미니-배치: Mini-Batch

  • 전체 훈련 데이터셋을 여러ㅓ 개의 작은 batch로 나눔
    에포크: Epoch
  • 전체 훈련 데이터셋이 순전파/역전파를 통해 한 번 학습을 완료함
    반복: Iteration
  • 한 번의 epoch에서 각 batch 별로 학습

    전체 데이터셋의 크기가 700이고 미니배치의 batch size가 100인경우에 21번의 iteration동안 반복 학습을 했다면 몇 번의 epoch가 지나갔는가? n=700 batch size= 100, 700/100= 7 이는 1 epoch= 7 iterationos를 의미 21/7=3 ->epoch=3

학습률: Learning Rate

경사 하강을 할 때 움직이는 점의 보폭(step size)을 결정하는 상수
학습률의 크기에 비례하여 각 epoch마다 보폭을 조절함
-학습률이 작을수록 학습 시간이 길어지지만, 정확도는 높아짐
-학습률이 높을수록 학습 시간은 줄어들지만, 정확도가 떨어짐

개와 고양이의 이미지 분류

이미지의 데이터 표현

비트맵 이미지: BMP(Bitmap)
-각 픽셀을 하나의 정수로 표현
컬러의 표현: RGB(Red, Green, Blue)
-색의 원소별로 8비트씩: 한 픽셀당 24비트 필요

이미지간의 유사도 측정

이미지 임베딩: Image Embedding
-임베딩: 구조화되어 있지 않은 비정형 데이터로부터 데이터의 특징을 추출
-이미지 임베딩: 이미지 데이터의 특성을 반영한 벡터를 생성하는 것

개와 고양이 이미지 임베딩:
-개와 고양이의 이미지에서 각 픽셀간의 패턴을 특성으로 찾아내기
-찾아낸 특성을 기반으로 각 이미지간의 유사도를 측정

훈련용/시험용 데이터 준비



MNIST 데이터셋 필기체 인식

MNIST 데이터셋:

The MNIST dataset of handwritten digits:
-0에서 9까지의 숫자를 손으로 쓴 이미지의 모음
-흑백이미지: 픽셀당 8비트, 해상도: 28x28=784픽셀
-총 7만장의 데이터: 이중에서 600개만 추출(60x10개)

출력층의 구성

원핫인코딩:One-Hot-Encoding
-데이터를 수많은 0과 한 개의 1의 값으로 구분하는 인코딩 방법
-범주형 데이터의 범주가 3개라면 3차원 벡터로 표현
-IRIS: setosa=(1,0,0), versicolor=(0,1,0), virginica=(0,0,1)

입력층의 구성

픽셀 하나당 하나의 입력: 총 784개의 입력값

신경망의 구성

DNN을 구성하는 각종 파라미터 설정: 뉴런의 수, 활성 함수, 학습 방법 등

MNIST 데이터셋을위한 deep neural network를 구성하기위해, 입력층과 출력층의 퍼셉트론 노드 갯수로 가장 적당한 것은 ?이미지의 해상도는 28x28,출력은 원핫인코딩 방식을 사용한다. 입력층 퍼셉트론 갯수=28x28=784, 출력층의 퍼셉트론 갯수= 10개 (데이터의 범주가 10개니까 0~9)

Neural Network으로 필기체 인식:

다양한 분류기의 성능 비교:


Tree는 분류기의 의사결정 구조를 인간이 이해하기 쉽지만, NN은 의사 결정 구조를 인간이 이해하기 어려운 블랙 박스 구조를 가진다.

분류기와의 차이점가 정확도 등등에 대해 더 조사해보자

profile
안녕하세용 개발에 미치고 싶은 초보 개발자입니다:)

0개의 댓글