[Aiffel] 아이펠 30일차 개념 정리 및 회고

Gongsam·2022년 2월 9일
0
post-thumbnail

1. 딥러닝 개념 정리

1) 분포 가설과 분산 표현

  1. 희소 표현(Sparse Representation)
  • 벡터의 특정 차원에 단어, 혹은 의미를 직접 매핑하는 방식
  1. 분산 표현(Distributed Representation)
  • 모든 단어를 고정 차원의 벡터로 표현하지만 특정 차원이 특정한 의미를 가진다고 가정하진 않음.
  • 분포 가설: 유사 맥락에서 나타난 단어는 의미가 비슷하다는 가정을 할 것
    • ex) 나는 ___을 먹는다 ⇒ 목적어에 오는 것들은 의미상 비슷함
  • 분포 표현: 비슷한 맥락에서 나타난 단어끼리는 벡터 사이의 거리를 가깝게, 그렇지 않으면 멀도록 조정
    • 단어 간의 유사도 측정 가능
    • embedding layer: 단어 분산 표현을 위한 레이어, n*k의 분산 표현 사전을 생성(단어 n개, k차원으로 표현)

2) Embedding Layer

  1. 의미
  • 컴퓨터용 단어 사전
  1. 원리
  • 단어의 양을 전달하면 그에 맞게 사전을 생성
    • embedding size를 정하면 weight는 단어의 수(=embedding size)와 같아짐.
  • 데이터를 거치며 단어의 분산 표현(의미)를 업데이트 해나감(Lookup table)
  • 단어가 룩업 테이블에 매핑되는 원리
    • one-hot encoding: N개의 단어를 N차원의 벡터로 표현하는데, 단어가 포함된다면 1을 넣고 나머지엔 0을 넣는다.
      • ex) [사과, 배, 바나나, 딸기]에서 딸기일 경우 [0, 0, 0, 1]
      • 단점
        • 유의어, 관련어와의 개념차이가 무관한 단어와의 차이랑 다를게 없음.
        • 차원의 저주: 단어 수만큼 원-핫 인코딩을 구성하면 차원의 수가 그만큼 증가함.
  1. 주의점
  • 단어를 단순히 대응시킬 뿐이라 미분 불가능 = 어떤 연산 결과를 embedding layer에 연결시킬 수 없음
  • 입력에 직접 연결되게 사용해야함, 원-핫 인코딩된 단어 벡터의 형태일 때 가장 이상적

3) RNN(Recurrent Neural Network)

  1. Sequential
  • 문장, 음성, 영상의 특성
  • sequence data: 데이터의 나열 사이에 연관성이 없는 배열도 해당, 하지만 인공지능에서는 예측을 위해 요소 간의 연관성을 필요로 하기 때문에 딥러닝에서의 시퀀스는 순차적인 특성은 필수 요소임.
  1. RNN의 원리
  • 입력되는 모든 단어만큼 Weight를 만드는 것이 아님.
  • 입력 차원과 출력 차원에 해당하는 단 하나의 weight를 순차적으로 업데이트
  • 한 문장을 처리하는 데에 반복되는 연산이 필요해 다른 레이어에 비해 느리다


    gif 출처
  1. 문제
  • 기울기 소실: 위의 gif 파일을 보면 ?에서 What은 거의 희석되어 있는 것을 볼 수 있다.

4) LSTM(Long Short-Term Memory)

기울기 소실 문제를 해결하기 위해 고안된 RNN 레이어의 일종
내용 출처
1. 구성

  • foret gate layer: cell state로부터 어떤 정보를 버릴 것인지 sigmoid layer를 이용해 결정
  • input gate layer: 새롭게 생성된 cell state를 기존 cell state에 얼마나 반영할 것인가. (sigmoid layer가 어떤 값을 업데이트할 지 정한 후, tanh layer가 새로운 후보 값을 대상으로 벡터를 생성해 cell state에 업데이트 할 재료를 만듦)
  • output gate layer: 새롭게 생성된 cell state를 새로운 hidden state에 반영할 정도를 정함
  1. 비교
    참고
  • GRU: Gate mechanism이 적용된 RNN 프레임워크의 일종, LSTM에 비해 더 간략한 구조를 가지고 있음
  • 양방향 RNN: 순방향으로만 진행할 경우 생길 수 있는 문제를 방지하고자 진행방향에 변화를 준 RNN
    • 순방향, 역방향의 weight를 각각 정의하므로 RNN의 weight의 2배가 됨

2. CS231N Lecture 5 내용 정리

참고자료
CS231N Lecture 5 내용 정리
CNN 용어 정리
1 * 1 convolution
CNN architecture

1) 용어정리

  1. 합성곱

    출처
  • 필터를 이용해 슬라이딩하며 계산을 수행함. 각 결과를 모은 Feature map을 생성
  1. 채널
  • 컬러값을 나타냄 ex) RGB = 3, WB = 1
  • n개의 필터 = n개의 채널
  1. 필터 (+ stride)
  • 이미지의 특징을 추출하기 위한 공용 파라미터, kernel이라고도 함
  • 정사각형 형태가 일반적
  • 지정된 간격(stride)으로 입력 데이터를 순회, 채널별로 합성곱을 해 모든 채널의 합성곱의 합을 feature map으로 생성함
  1. 패딩
  • feature map(합성곱을 한 결과)의 크기는 합성곱 수행시 이전과 비교해 줄어든다.
  • 위와 같은 변화를 방지하기 위해 패딩을 설정함.
  • 일반적으로 zero-padding을 사용
  1. pooling layer
  • convolution layer의 activation map을 입력 받아 입력된 데이터를 줄이거나 특정 데이터를 강조
  • 주로 Max pooling을 이용함

+)

  • 패딩(Padding) = zero 패딩. 합성곱 층의 입력 주위에 0으로 채워진 픽셀 패딩하는 이유
    1. 입력과 출력의 크기를 같게 만들어주기 위해 처리해준다.
    2. 가장자리의 중요한 정보를 잃지 않기 위하여 처리
  • 피처 맵(Feature Map)
    1. 필터가 입력 이미지의 특성을 찾아낸 출력
    2. 수학적으로는 합성곱이나 풀링 계산으로 만들어진 행렬.
  • 액티베이션 맵(Activation Map) = 특성 맵
    1. 뉴런 하나를 나타내는 그리드의 각 칸이 활성화되는 크기를 보여준다.

2) Downsampling

padding을 이용해 크기를 줄이지 않는 방법을 선택했는데, pooling을 하는 이유는 무엇일까?

  • 특징은 유지한 채로 계산을 빠르게 하기 위해
  • padding을 추가해서 합성곱을 수행하는 것은 이미지의 특정 부분을 잘라내 부분적 특징을 추출하는 것.
  • 반면에 pooling은 이미지의 전체적인 특성은 유지한 채로 픽셀만 줄이는 것
  • 이렇게 하면 계산이 빨라짐

3) Feature map vs activation map

Activation Map은 Feature Map 행렬에 활성 함수를 적용한 결과. 즉, Convolution 레이어의 최종 출력 결과가 Activation Map.

4) CNN Architecture

  • 마지막에 FC layer를 사용하는 이유
    분류를 수행하기 위함

3. 회고

아는 것 같다가도 모르겠는게 딥러닝인 거 같다. 이제 알았다고 생각했는데 정작 질문을 받거나 다른 모델과 비교해보라고 하면 바로 답을 내지 못하는게 부지기수다. 공부할 때 단순하게 받아들이기만 하는게 아니라 이전에 배웠던 내용하고 비교해보면서 생각해는 힘을 길러야겠다.

profile
🐬 파이썬 / 인공지능 / 머신러닝

0개의 댓글