관리 메뉴

jisoleil's coding good thing

AI 언어지능 딥러닝 3일차 본문

AIVLE/9주차

AI 언어지능 딥러닝 3일차

jisoleil 2023. 3. 30. 02:00
  • Bidirectional(양방향) layer

순방향(왼쪽에서 오른쪽)으로 정보를 추출하지만 역방향의으로도 정보를 추출해서 이용할 수 있다. 이를 양방향 레이어라고 한다. 일반적으로 양방향 layer을 사용할 경우 시퀀스 데이터에서 더 많은 정보를 추출할 수 있기 때문에 성능이 더 좋게 나타난다. 

 

1번은 순방향 LSTM으로 마지막 시점 정보에는 과거의 기억 '맥락'이 포함되어 있다. 

 

2번은 양방향 LSTM으로 빨강색 정방향 첫번째 시점엔 첫기억이 있으며, 마지막 시점엔 마지막 기억과 과거 기억이 포함되어 있다(최신 정보를 '과거의 맥락'을 고려하여 반영). 

파랑색 역방향 첫번째 시점엔 첫기억과 함께 과거기억(우리 기준엔 미래) 포함되어 있다(첫 시점의 정보를 미래의 맥락을 고려하여 반영), 마지막 시점엔 순수하게 마지막 기억만 있다. 

Flatten을 통해 모든 시점의 정보를 반영한다. 

역방향으로 인한 특성?

=> 모든 시점을 반영하여 값을 추출!

  • 코딩
 
hl=Bidirectional(layer=LSTM(32,return_sequences=True))(hl) #32바이트 정방향+역방향 = 64개
 
forward_gru=GRU(32,return_sequences=True)#정방향엔 GRU 사용
backward_LSTM=LSTM(24,return_sequences=True, go_backwards=True)#역방향엔 LSTM사용 , 역방향으로 사용시 go_backwards=True 필수
hl=Bidirectional(layer=forward_gru,backward_layer=backward_LSTM)(hl)#연결
 
  • NLP에서의 CNN

CNN은 주로 이미지 처리. 즉, 비전 분야에서 사용되는 알고리즘이지만 이를 응용해서 자연어 처리에 사용하기 위한 시도들이 있다. 

데이터 shape (#, 6,3)

 

1번 Conv1D(stride=1, activation='relu', filters=4, padding='valid', kernelsize=3) => 시점별 feature는 전부 보겠다. 

Conv1D: 텍스트 형이기 때문에 1차원이다. 

kernelsize: 한번에 관찰할 시점 수 

결과 (#,4,3)

4: filter의 수 

 

2번 MaxPool1D(kernelsize=2)

kernelsize: 한번에 관찰할 시점 수 (+stride도 있다. 여기선 defalut 1로)

결과 (#,2,3)

2: kernelsize의 수

 

결과적으로 시점의 축소가 일어난다. 

LSTM Conv1D
모든 시점 전부 고려됨 3(우리 예시)개 시점 동시에 동등하게 고려
(관찰하는 시점 외에는 관심없다. )

즉, NLP에서 CNN을 지나는 이유는 

=> 금붕어도 기억할 수 있을 정도로 기억을 줄인다. 

 

  • 코딩
hl=Conv1D(filters=16#16 종류의 특징을 제작해줘
          kernel_size=5#한번에 5시점씩 고려해줘야해
          activation='relu',
            padding='same')(hl)
hl=MaxPool1D(2)(hl)# 배치놈, 드랍아웃을 따로 해주지는 않았음

 

 

내일은 응용하는 수업이 있을 예정...

어제 수업은 충격의 연속이였지만 오늘 수업은 들을만했다

 

내일도 

파이팅 해야지!

'AIVLE > 9주차' 카테고리의 다른 글

AI 언어지능 딥러닝 2일차  (0) 2023.03.29
AI 언어지능 딥러닝 1일차  (0) 2023.03.28
Comments