본문 바로가기
math4ai/Machine Learning and Deep Learning

M4AI) Special Topics: Deep Learning, etc. (1)

by 잼민ai 2024. 7. 29.
더보기

공부해야 하는 것들

  • CNN, RNN, LSTM, Transformer (NN milestones)
  • Bayes Net, Markov Chain, HMM (이걸 물어볼까..)
  • Learning Theory, Reinforcement Learning (이걸 물어볼까..2)
  • MLDL Techniques (GD/SGD, Activation, Scheduling, BatchNorm, ...

NN Milestones

일단 뉴럴 네트워크가 뭔지부터 보자. 뉴런 --> 레이어 --> 뉴럴 네트워크 순으로 설명하면 될 것 같은디.. 

뉴런은 이렇게 생겼다!

GIST EC4213 MLDL, 손진희 교수님 lecture note

<인풋 노드> -- 가중합 -- 활성화 함수 -- <아웃풋 노드>의 단순한 구조이다~.~ 

좀 복잡하게 모델을 만들고 싶으면 hidden layer를 만들어주면 된다. Input node에 대한 ouput node를 여러 개로 해주면 되는데, 최종 ouput node는 그 hidden layer의 노드들을 마치 또다른 input node로 하는 뉴런의 output이라 생각하면 됨. 요렇게:

 

GIST EC4213 MLDL 손진희 교수님 lecture note + 본인 필기 추가..

Forward pass란 inference 할 때처럼 output을 계산해주기 위해 input => output 노드로 각 layer의 값들을 전달하는 과정이고, backward pass (a.k.a. Back propagation) 는 forward pass에서 계산된 loss —inference 시에는 계산 안 해줘도 되는데 training 할 땐 계산해야됨— 를 바탕으로 각 가중치들의 gradient를 계산해서 가중치를 갱신해주는 일련의 과정을 말함!

 

대충 알았으니 이제 대표적인 NN 베이스의 모델들을 살펴봅시다.

 

CNN

cnn은 미국의 방ㅅ이 아니고, (output layer 제외) 총 세 가지의 layer로 구성된 네트워크입니다. 주로 이미지 처리에 사용돼요.

  • Convolution layer: 합성곱 연산을 하는 layer입니다. kernel이 input 이미지를 sliding하면서 합성곱을 계산해주고, 이 이후에 ReLU 등의 activation을 거쳐 non-linearity가 반영됩니다.
  • Pooling layer: convolution layer를 거친 상태의 input representation을 더 다운사이징 해주는데, 이미지에서 국소적인 영역은 픽셀 간 값의 변동이 거의 없다는 점을 캐치하는 데 도움을 줄 수 있어요. 사실 실제로 그런진 모르겠음ㅋㅋ
  • Fully-connected layer: 우리가 저 위에서 다룬 nn의 구조! 이전 계층의 노드들 전부가 다음 계층의 노드와 연결된 layer들을 말합니다. 

Training 시, 무작위적으로 설정되는 kernel과 FC layer의 가중치들이 업데이트 된다고 할 수 있겠어요.

 

RNN

RNN은 시계열처럼 sequential 데이터를 처리하기 적합한 모델입니다. 시계열 데이터의 경우, 현재 타임스탬프뿐만 아니라 그 이전 타임스탬프도 중요한 정보를 담고 있고 과거-현재의 변화 양상 자체도 하나의 정보가 될 수 있잖아요. 따라서 직전 타임스탬프의 정보를, 일종의 메모리 역할을 수행하는 hidden state를 활용해 저장하고 다음 타임스탬프 처리 시 사용하게 됩니다.

 

출처: 딥 러닝을 이용한 자연어처리 입문

input의 가중합과 tanh 함수로 계산되는 hidden state의 결과값을 다음 stamp 처리 시 넘겨주는 느낌이에요. 

시계열 데이터를 예로 들었지만, 토큰 단위로 처리되는 문장에서 토큰 하나하나가 정보를 담고 있는 벡터이고 따라서 문장은 벡터의 시퀀스라고 정의할 수 있으므로 RNN이 자연어 처리에서 사용될 여지가 충분히 있는 셈이죠.

 

RNN의 변형인 LSTM과 GRU도 알아보겟슴

 

LSTM

long-short-term memory라는 당췌 뜻을 유추하기 어려운ㅋㅋ 이름을 가지고 있는 아이인데요.. 앞서 소개한 vanilla RNN은 딱 봐도 sequence의 길이가 길어지면 시퀀스의 가장 마지막 정보를 처리할 때 병목현상이 생길 것처럼 보여요. 실제로 길이가 긴 sequence에 대해서는 이전 단계의 정보들이 제대로 보존되지가 않는다는 단점이 있습니다. 이에 대한 해결책으로 LSTM이 등장하는데요, tanh를 사용했던 vanilla RNN에 비해, tanh와 더불어 sigmoid 및 entry-wise product 등의 조금 더 복잡한 연산을 추가해 현재 인풋의 정보를 얼마나 보존할 것인지를 결정해주는 일종의 게이트(gate)를 구현했습니다. 그래서 어떤 timestamp의 정보는 별로 안 중요하니까 상당 수 삭제되고, 또 어떤 timestamp의 정보는, 그보다 훨씬 이전이라고 할지라도 중요하다 판단되면 보존되는 유연한 구조를 갖게 되는 거죠.

출처: 딥 러닝을 이용한 자연어처리 입문

우웩

 

GRU

GRU는 LSTM의 장점을 그대로 가져온 채 구조를 좀 단순화한 거래요. 학습속도도 더 빠르다고 하는군요~.~

출처: 딥 러닝을 이용한 자연어처리 입문

그리고 대망의..

Transformer

얘는 다룰 내용이 많아서.. attention부터 복습해야 함;;;

다음포스트로 토스하겠습니다 아 나 공부 언제 다해

728x90