[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를 순차적으로 업데이트
  • 한 문장을 처리하는 데에 반복되는 연산이 필요해 다른 레이어에 비해 느리다
    RNN의 원리를 나타낸 gif 파일
    What time is it?이라는 문장을 예시로 RNN의 원리를 보여줌. Sequential data가 처리되는 과정을 보여줌.
    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개의 댓글