Deep Learning and Neural Networks (part 4)

hotmoist·2021년 11월 24일
0
post-custom-banner

Udemy 강의 'Machine Learning, Data science and Deep Learning with python' 내용 정리


RNN

  • Time-series 데이터
    • 미래의 행동을 과거로부터 예측
    • web log, sensor log, 주식 거래 ...
    • 자율 주행 자동차 → 과거의 운행에서부터 예측
  • 임의의 길이를 갖고 있는 데이터
    • 기계 해석
    • 이미지 캡션 ...
    • 기계에서 생성된 음악

Recurrent Neuron (회귀 뉴런)

  • 과거의 output을 현재의 input과 함께 뉴런에 넣는다 → 과거의 데이터가 현재의 데이터에 영향을 준다
  • 과거의 뉴런의 결과(output)가 다음 (현재)시간에 영향을 줌 → "Memory Cell"

Layer of Recurrent Neurons

  • 한 레이어의 여러 노드의 결과 값을 합친 것이 다음 time-series 데이터에서 영향을 줌

RNN Topologies

  • sequence to sequence
    • 과거의 주식데이터를 통해 앞으로의 주식 데이터 예측
  • sequence to vector
  • Vector to sequence
  • Encoder → Decoder

RNN training

  • 역전파를 시간을 통해서 진행
    • time step에 따라 적용됨
  • 모든 time steps가 빠르게 더해짐
    • 연전파에 제한을 걸어서 time step의 수를 줄일 수 있음
  • 과거의 상태들이 현재의 상태에 연관이 없어질 수 있음
    • 문장 구조를 학습시킬때 문제 → 앞서 언급된 용어가 더 이상 효력이 없을 수 있음
  • LSTM Cell
    • Long Short Term Memory Cell
    • 짧은 구간과 긴 구간의 상태를 유지함
  • GPU Cell
    • Gated Recurrent Unit
    • 단순화된 LSTM Cell, 성능이 괜찮음
  • 매우 민감함 → 자원에 매우 의존적, 잘못 선별된 데이터가 악영향이 매우 큼

Transfer Learning

전이학습

  • 이미 training 된 모델을 이용하여 원하는 행위(?)를 하기 위해 새로운 학습 진행
  • Model Zoos
    • 이미 training 된 모델만 사용
  • 블랙 박스와 같음 → 내부 구조를 파악할 수 없음

예시

Keras의 ResNet50을 불러와서 predict 수행

from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

## 전처리 

img_path = 'fighterjet.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

## 가중치 추가 + 모델 불러오기
model = ResNet50(weights='imagenet')

## 예측
preds = model.predict(x)

pre-trained 모델을 매우 쉽게 사용할 수 있음을 확인할 수 있음


Deep learning Regularization with Dropout and Early Stopping

Regularization (정규화)

  • 데이터의 과적합을 막아줌
    • training을 위한 데이터의 정확도는 좋지만, unseen 데이터에 대해서는 정확도가 좋지 않음
    • 과적합된 모델은 학습데이터의 패턴을 외워버리는 것 → 실제 생활에서 사용하기 어려움 → test랑 evalutation 데이터 셋에서 낮은 정확도를 보임

⇒ 정규화를 통해서 과적합을 막는다

Simplify model

  • fewer neurons, fewer layer

Dropout

  • 한 epoch 마다 랜덤하게 특정 뉴런들을 버림 → 특정 뉴런이 특정 지점에서 과적합되는 것을 막을 수 있음

Early Stopping

  • epoch마다 정확도를 모니터링 함 특정 epoch에서 부터 더 이상 정확도 개선이 없는 경우
    (정확도는 높아지지만 validation 정확도는 개선 X) ⇒ 과적합 될 가능성이 높음 ⇒ Early Stop
profile
No coffee, No coding
post-custom-banner

0개의 댓글