ASAC-SK플래닛 T아카데미 데이터 엔지니어

25.12.12 47일차 [딥러닝 | 개요, NLP 모델]

Datadesigner 2025. 12. 15. 17:07

오늘은 딥러닝 파트를 시작하였고

개요

NLP 모델

수업을 진행하였다.

 


개요

 

 


  • history
    • 1943
      • 인공지능 제안 - 논문
    • 1957
      • 퍼셉트론 (인간의 뇌신경(뉴런)을 본따서 만든 실물장비)고안, 제안
        • 단일 퍼셉트론 => 개선 => 다중 퍼셉트론(더 좋은 결과를 발생)
      # 단일 퍼셉트론
      y = wx + b
      # w : 가중치, b : 편향
      # 학습은 최적(모델의 정확도가 가장 높은)의 w, b 를 찾는 과정
      
        - 맥북 pro 신규 출시했음(M5 기반), 구매할것인가?
          - 검토 (모든 검토 사항이 동등하지는 않다 -> 가중치가 다르다)
            - 나한테 지금 필요한가?
            - 지금 사용중인 노트북이 느린가?
            - 회사에서 필요한가?
            - ....
            - 돈이 있나? <- 가장 가중치가 높음
          - 결론
            - 구매라는 결정을 하기 위해서는 모든 특성(검토사항)에 대해 적절한 (가중치->파라미터)를 부여해야 올바른 결정을 할 수 있다.
            - 식으로 구성
              - 다수결 X -> 모든 조건은 동등하다
              - 가중치를 부여하여 구성
              - y = w1x1 + w2x2 +.. w2xn + b > 회귀에서 봄
              - > 임계값(기준)
        - 예측을 하기 위해서 가중치 w1,w2,w3 ...wn, 편향값(bais,y절편)을 찾는 과정 => 학습(딥러닝) =>
        - 최적의 파라미터를 찾는 과정 -=> LLM가면 조 단위
      
      
  • 최신 이벤트
    • 2007 : 아이폰(스마트폰 등장) -> 빅데이터 출현
      • 피처폰 -> 스마트폰 전환되던 시기
    • 2005 ~ 2010 : 클라우드
    • 2015 ~ 2016
      • 알파고 출현, 파이썬 교육 기업중심으로 전국적으로 시작되었음
      • AI 관심, 집중 연구 시작
딥러닝의 역사

 

 

기초이론

 

단일 퍼셉트론

 

 
  • 간단한 구조
    • 입력 2개를 넣어서출력 도달
    • 인공신경망 = 입력층(x) + 출력층(y)

단일 퍼셉트론 1

 

  • 간단한 구조
    • 입력 n개를 넣어서 출력 도달 (맥북구매예시)
    • 인공신경망 = 입력층(x) + 출력층(y)
    • 해당 수식은 행렬식으로 표현

 

단일 퍼셉트론 2

문제 발생(해결을 못하는)

 

  • XOR 문제는 해결을 못해
 

 

다중 퍼셉트론

 

  • 1개의 층이 아닌 여러층으로 인공신경망을 구성하면 문제를 해결할 수 있다 => 사고를 더 깊게 한다 (더 많이, 더 복잡하게, 더 깊게)
  • 층(layer)를 늘려서 사고의 단계를 깊게 구성 -> 해결할 수 있지 않을까?
  • 인공신경망 = 입력층(input layer) + 은닉층(hidden layer) + 출력층(output layer)
    • 신경망을 깊게 구성하면 문제를 해결할 수 있다. => Deep Learning 방향성 확실하게 잡음 (CNN 이미지 처리 논문에서 첫 언급, 2009년경)

다중 퍼셉트론 1
다중 퍼셉트론 2

입력층과 출력층 사이에 중간층(은닉층) 2개를 배치하여서 문제를 해결함

 

신경망 개념이 생겨나면서 본격적으로 딥러닝이라는 개념이 생기기 시작하였다.

보충

 

퍼센트론

 

  • 특징
    • 입력값을 여러개 받아서 출력 생성
    • 입력값별 가중치가 다르다(중요도가 다르다)
  •   y = ax + b ( 1차 함수 )

      a -> W(weight: 가중치)
      b -> b(bais: 편향, 바이어스)

      ------------------------

      a, b는 단순한 값이 아니라, 행렬로 표현이다!!, x도 행렬로 표현
  • 성분
    • W, x, b : 행렬로 데이터를 표현
    • Wx : 행렬곱

퍼셉트론 미세 조정 도식화

 

 

아달라인

 

 
  • 특징
    • 퍼센트론 => 집중 => 최적의 선을 찾는 방법
    • 최적화!!
      • GD(경사 하강법) 고안 -> 최초 적용 -> 아달라인 -> ... -> 머신러닝으로 발전
  •  

아달라인

로지스틱 회귀

 

 
  • 활성화(activation) 함수 집중
    • 활성화 함수가 결과에 어떤 영향을 미치는지 집중 -> 로지스틱 회귀 등장
    • 함수 => sigmoid(시그모이드) 함수 개발
      • 결론 : 결과값은 0과 1로 수렴!!(이진 분류)
    • 인공신경망이 이진 분류 문제를 해결할수 있게되었다!!
로지스틱 회귀 모델 도식

로지스틱 회귀의 함수 모양

0 또는 1로 수렴하기 때문에 2가지 분류를 할 수 있게 되었다.

XOR 문제 봉착(해결 x)

 

 
  • 단일 퍼센트론으로는 XOR문제 해결 x
    • 2차원 평면에서 XOR 데이터를 분류할수 있는 직선을 만들수 없다!!
이게 안된다

 

위 이미지를 표로 정리한 모습

다중 퍼센트론

 

 
  • 특징
    • 입력층과 출력층 사이에 중간층(은닉층 hidden layer) 개입
    • 층을 깊게(deep) 구성
      • 깊이, 연결방식, 층의 형태 등등 다양하게 응용 발전
    • 이를 통해서 해결 -> 생각을 더 많이 하게 되서 해결

다중 퍼셉트론으로 인해서 위의 문제를 해결 할 수 있게 되었다. 

 

 

'''
  1f layer
    - 입력층
    - x1, x2 -> nand, or 연산 수행

  2f layer (기능 부여)
    - 은닉층
    - nand
      - 하나라도 0이 존재하면 -> 1
      - 두값이 모두 1이면 -> 0
    - or
      - 하나라도 1이면 => 1
      - 두값이 모두 0이면 -> 0

  3f layer
    - 출력층
    - nand, or의 결과를 and 처리
    - and
      - 두 값이 모두 1이면 => 1
'''

 

XOR을 해결할 수 있게 되었다

 

  • 이후
    • 발전 -> 암흑 -> 발전 -> 암흑 -> 급격히 발전(급가속, 2020년 이후)
 

  • 퍼센트론 기반
    • 아달라인
      • 경사하강법 적용 -> 최적의 분류선(직선) 생성
    • ...
    • XOR 문제 해결 X
      • 단일 퍼센트론 해결 불가능함!!
      • 인공지능 분야에 암흑기 시작
  • 암흑기 이후
    • 알고리즘 발전 -> 머신러닝 발전
    • 인공신경망 발전 -> 딥러닝 발전
      • 다중 퍼센트론 제안
        • 중간층(은닉층) 제안
        • 층(layer) 깊게(deep) 구성
        • 해결됨!!
        • 층이 깊어지게 설계하자 => 파라미터가 많아진다!!
        • 설계 방식이 변경되었음!!
      • 다양한 이론 발전
        • 오차 역전파
          • 1986년 제안 -> 딥러닝 학습이 정립
            • 순전파
              • x -> 학습(인공신경만 통과) -> y
            • 역전파
              • x <- 학습(인공신경만 통과) <- y
              • 거꾸로 가다보면 길이 막혀 있거나, 통과과 않괴더나 등등 발생 -> W 조정(최적화, 미세조정)
        • 활성화 함수
          • 기존 : 시그모이드(로지스틱 회귀에서 사용)
          • 신규 : tanh, relu 계열softmax, ....
            • 값들이 조정!! -> 학습률 상승
        • 최적화 기법
          • 기존 : 경사 하강법(GD)
            • SGD
              • 모멘텀 -> Adam
              • 아다그리드 -> ... -> Adam
      • 결정적 요인 (15년 이내 모두 발생)
        • 이미지 인식 대회에서 딥러닝 머신러닝 이겼음(패러다임 전환)
        • 알파고
        • 장비의 발전
          • GPU(엔비디아) + CUDA(아키텍처)
          • 반도체 발전
          • 인터넷 속도 박전
          • 빅데이터 시대 도래 <- 애플의 아이폰!!
          • 클라우드 발전
        • 가속효과!!
    • 2023년 LLM등장으로 새로운 패러다임 전환 진행
      • 기존 예상치보다 10~15년이 더 빨랐음!!
 

딥러닝 구현에 필요한 요소

 

라이브러리 혹은 엔진(프레임웍)

 

텐서플로우 (with keras)


  • 점유율 1위(?)
  • 구글
  • 개발 스타일 3가지 방식
    • keras(문과생을 위한 딥러닝 엔진-인터페이스)를 이용한 방식 -> 추천방식(빠르게 구성)
      • 어려운 부분은 내부에서 숨기고, 인터페이스 중심으로 구성
    • 텐서플로우 low level 구성 (난이도 높음)
    • 텐서플로우 1.0 x 마이그레이션 방식 (오래되었음)
  • 파이썬으로 플로우 구성 후 실제 러닝 등 구동은 C++에서 진행(이원화된 스타일)
    • 디버깅, 데이터의 흐름을 체크하기가 어렵다
    • 텐서보드를 이용하여 체킹
    • Define By Run 스타일

파이토치


  • 점유율 2위(?)
  • 메타
  • 개발 스타일이 파이썬과 많이 유사함
    • 실행 즉시 (칸칸 즉시)바로 결과 확인 가능
    • Define And Run 스타일
    • R&D 기관(카이스트,키스트,기업,... 선호함)
  • 공개된 LLM - 라마 등 기반으로 LLM개발 할때 선호함
  • 트랜스포머(자연어 처리에 패러다임을 바꾼) -> bert, bart, gpt -> ,, -> GPT -> LLM
    • 파이토치로 구성된 레퍼런스가 가장 많고 -> 자연어 처리(NLP)의 기본 엔진을 파이토치로 선호하게 된 이유
    • 허깅페이스에 등록된 대부분 모델들은 pytorch 지원

기타

 

  • 오픈소스 기반, 중소 엔진등이 다양하게 존재함.

상호 호환

 

  • 딥러닝 엔진간 포맷 변환(허깅페이스 API에서 지원), 공통 포맷 등 대부분 지원
 

장비

 

  • 자본주의 -> 장비를 많이 가진 기업/국가 지배
  • GPU
    • NVIDIA
      • CUDA 생태계 구성
        • Compute Unified Device Architecture
        • GPU의 가상 명령어 집합 및 병렬 컴퓨팅 요소에 직접 접근하여 컴퓨트 커널을 실행할 수 있도록 하는 소프트웨어 계층
        • 많은 딥러닝 엔진 회사들 CUDA 모두 지원
      • CUDA를 통해서 딥러닝 엔진이 GPU를 학습에 이용할 수 있게되었다(생태계)
    • AMD
      • ROCm
      • 딥러닝 엔진 회사들의 지원이 늦었음 (ROCm 개발 및 안정화가 너무 늦었음)
    • 애플
      • 인텔 + AMD
        • GPU 사용 X
      • 애플실리콘 (2020년)
        • 자체 GPU 사용 가능하게 구성 -> 2021년부터 가능해짐(아나콘다, 미니콘다 환경 제공...)
        • 맥북으로 딥러닝 학습은 애매함 -> 클라우드, 딥러닝 워크스테이션으로 가랏(2022~)
          • eGPU
  • TPU
    • 구글, 알파고 통해 선보임

딥러닝 워크플로우

 

 

요구사항


 
  • 목적
    • 실제 병원에서 흉부외과 검사 -> CT 촬영 -> 이미지 구성 -> 데이터화(수치를 추출) -> 모델에 주입 => 예측 -> 예측 결과 -> 악성/양성 진단 -> 의사에게 제공 -> 종합적 판단(AI + 개인판단) -> 의료 서비스 제공
  • 해당 모델은 인공신경망으로 구성 (딥러닝 사용)

실습을 위해서 CSV파일을 제공받았다. 암 악성 양성 판정 데이터

 

 

모델 구축 - 딥러닝 (인공신경망)

 

데이터 분할

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X , y , random_state=10, stratify=y)
# 기본 비율 75:25 유지
X_train.shape, X_test.shape, y_train.shape, y_test.shape

((352, 17), (118, 17), (352,), (118,))

늘 하던대로 데이터 분할

인공신경망 구축 <-> 머신러닝일 시 알고리즘 선택

 

 
  • 단순 퍼셉트론
    • 입력층 -> 출력층
  • 다중 퍼셉트론
    • 입력층 -> 은닉층(중간층) -> 출력층
  • 인공신경망
    • 일반 : ANN, DNN(은닉층이 2개 이상이면 DNN이라고 표현함)
      • 특정 데이터에 특화되어있다는 표현이 X(무색무취)
    • 데이터 관점
      • 영상, 이미지 => 비전분야 : CNN, ... VGG , Yolo, ...
      • 시퀀스(순서, 시간)가 존재하는 데이터 => 자연어, 시계열데이터(금융, 제조, IOT, ...): RNN, LSTM/GRU, ...
        • 자연어 -> RNN -> 트랜스포머(인코더, 디코더) -> gpt(디코더 계열) -> LLM 등장
      • 생성 => ..., GAN(인코더, 디코더), ....=> 생성모델로 확장
      • .. 다양한 신경망 존재
  • 본 구성은 DNN방식으로 구현하여 인공신경망을 작성
    • 엔진 : 텐서플로우 + keras (권장형)
  • 구성 컨셉
    • 인공 신경망 구성 (스타일 3가지 존재)
      • Sequential 객체를 통해서 층(layer)을 추가하는 방식으로 구성
    • 다중 퍼셉트론을 기반으로 은닉층을 추가(단순하게 1개만 적용)
    • 입력층 : (? , 17) # 데이터 개수에 상관없이, 피처는 17개
      ------
      은닉층 : (? ,데이터 부풀리기 처리 : 30 )# 30은 설정임
      ------
      출력층 : (? , 1) # 30개의 입력이 1개 값으로 수렴하게끔(이진분류, 악성|양성)
    • 데이터 1개가 인공신경망을 통과하여 올바른 정답에 잘 도착하게 하기 위해 -> 파라미터를 미세조정 (최적화) -> 훈련 데이터 전체가 대부분 정답에 잘 도달하도록 가중치, 편향을 조절 -> 어느정도 수렴하면 학습 종료함

 

from tensorflow.keras.models import Sequential # 모델의 기본 틀
from tensorflow.keras.layers import Dense      # 일반적인 층

# 1. 모델 틀 구성
model = Sequential()

# 2. 층 추가
# input_dim  : 입력층의 피처 수
# activation : 데이터가 해당 층을 빠져나갈때 활성화 함수를 통과할 수 있음(설정하면)
#              데이터를 일괄적으로 보정(relu) 0보다 크면 자기 자신
# relu       : 입력이 음수면 0으로 보정, 입력이 양수면 그 값 그대로 사용 => 학습 성능에 영향을 미침
# 540 = 17 x 30(다중 퍼셉트론 곱하기) + 30(편향은 다음층의 유닛(입력)의 개수) = 510 + 30 = 540
model.add( Dense( 30, input_dim=17, activation='relu' ) ) # 은닉층 추가(은닉층 추가할때 입력층 같이 표현함)

# 3. 출력층 -> 예측값 (악성 | 양성) : 활성화함수 : sigmoid(시그모이드, 이진분류)
#           -> 1개의 값으로 수렴
# 31 = 30 * 1 + 1
model.add( Dense ( 1, activation='sigmoid' ) )

# 최종 파라미터 수 : 540 + 31 <= 이만큼 최적화시킴 총 숫자
# Trainable params : 571  = 훈련 가능한 파라미터 수
# Non-trainable params: 0 = 훈련 불가능한 파라미터 수 => 차후 필요에 의해 훈련 중단(전이학습 내에서 보임)
# 4. 인공신경망 요약 -> 망 구성, 훈련 가능 여부, 파라미터 수
#                    -> 파라미터 수 (540 + 31)
model.summary()

학습

 

학습의 종류

 

  • 학습의 목적
    • 좋은 성능 내는(목표에 도달한) 모델을 만들기 위해서 최적의 파라미터 값을 찾는 과정
    • 학습 및 모델 반영
      • 온라인 학습
        • 실시간 (학습된) 모델 반영
          • 리스크 존재함
      • 오프라인 학습
        • 학습 따로, 서비스 반영 따로 구성
    • 학습 스타일
      • (일반적) 학습
        • 신규 구성한 인공신경망 -> 데이터 주입 -> 최적화 -> 학습 -> ...
      • 전이 학습 (transfer learning)
        • 사전 학습된(pre-trained model,특정 목적에 맞게 학습된 업스트림)을 가져와서 여러 방법(다운스트림)으로 학습
          • 유전 (과거세대 => 미래세대 정보를 유전적 전달 개념)
          • 빠르게 학습 가능함
        • 트랜스포머의 기본 원칙
        • 종류
          • 파인 튜닝
            • 사전에 학습된 모델의 파라미터값(가중치, 편향)을 초기화 -> 오랜시간 학습한 경험 제거
            • 남은것은 인공신경망 구조만 남음
            • 새로운 데이터를 넣어서 최적화
              • 시간이 많이 소요
              • 새로운 데이터에 최적화된 모델 생성 가능
          • 인컨텍스트 러닝
            • 제로샷
              • 사전 학습된 모델(업스트림)을 새로운 용도의 데이터(다운스트림)에 넣어서 추론/생성 등 행위를 시도
              • ex) 얼굴을 인식하는 모델(업스트림) 가져와서 글자 생성하는 기능(다운스트림)에 활용
              • 프럼프트 엔지니어링에도 활용된다(LLM)
            • 원샷
              • 새로운 데이터 1개를 모델에 주입하여 학습 -> 가중치가 약간 조정, 그 데이터에 약간 특화된다
              • 프럼프트 엔지니어링에도 활용된다(LLM)
            • 퓨샷
              • 새로운 데이터 몇개를 모델에 주입하여 학습 -> 가중치가 약간 조정, 그 데이터에 약간 특화된다
              • 프럼프트 엔지니어링에도 활용된다(LLM)
    • 데이터 사이즈 관련해서
      • 배치 학습
        • 1회 학습 시 전체 데이터를 풀로 넣어서 진행 -> 메모리 터질 확률 높음
      • 미니배치 학습
        • 데이터를 특정 단위(batch size)로 준비하여 학습 진행 -> 학습 회수가 더 늘어남 => 시간도 더 많이 소요됨
      • 기타용어
        • 데이터 전체를 학습에 모두 동원되었다면(1회차,배치 or 미니배치 -> 에포크(epho), 1세대 학습)
 

 

최적화 도구

손실(오류,오차값)

 

  • 크로스 엔트로피 식을 사용
    • 단항(이진)분류
      • binary_crossentropy
    • 다항(다중)분류
      • categorical_crossentropy
    • 기타 ....

평가지표


  • 정확도

평가 지표 관련 세팅과 학습까지

로그상 이렇게 학습된다.

  • 최종 20라운드 결과
    • 정확도 : 0.8718 = 87.1% => 100에 가깝게 최적화
    • 손실값 : 0.3616 = 36.1% => 0에 가깝게 최적화
 

 

학습 로그(결과) 시각화

 

import matplotlib.pyplot as plt

# 1개 차트에서 x축 공유, y축 왼쪽:손실, 오른쪽:정확도 표현
_, ax  = plt.subplots()

# x축을 공유 => 2개 데이터가 같이 사용
acc_ax = ax.twinx()

# 손실
ax.plot( history.history['loss']        ,'r', label='loss')
# 정확도
acc_ax.plot( history.history['accuracy'],'g', label='acc')

# 축 이름
ax.set_xlabel('epoch')
ax.set_ylabel('loss')
acc_ax.set_ylabel('acc')

plt.show()
# 정확도는 아직 수렴을 다 못함 => 학습이 더 필요함 or 데이터 증량 or 신경망교체
# 손실은 수렴중임 => 수치가 높음 => 학습이 더 필요함 or 데이터 증량 or 신경망교체

시각화의 결과값이다.

개요는 이렇게 끝,

 

딥러닝 자체도 머신러닝과 비슷하게 결국 데이터의 모양을 파악하고 학습시키기 전 모델을 세팅하는 과정이 더욱 복잡하고 또한 중요하다, 데이터 전처리등의 과정도 물론 아주 중요하다.

막상 학습과 평가 파트는 다 세팅해두면 코드 몇 줄로 끝나버린다. 기본이 제일 중요하다.

 


딥러닝 _ NLP모델

 

순환신경망 (Recurrent neural network)

 

  • 데이터 관점
    • 기본데이터 + 시퀀스정보 포함
    • 시퀀스 정보
      • 순서 or 시간
  • 종류
    • 시간(순서도 일부 포함됨)
      • 시계열 데이터
        • 시간축 중심으로 데이터가 나열
      • 금융
        • 주식, 환율, ...
      • 웹/앱서비스
        • 시간에 따른 작업, 로그
      • 제조 - 스마트팩토리/IOT
        • 센서 데이터 -> 불량, 이상탐지 -> 불량률 감소, 기계고장 진단
    • 순서
      • 자연어
        • 특정 토큰 -> 다음에 등장할 토큰 예측 -> 계속 순서대로 이어간다
          • 번역, 문장생성(질문과답변, 글짓기),..
  • 특징
    • 데이터는 앞에 기록, 흔적, 내용들이 뒤쪽에 영향을 미친다 -> 기억해야함
    • 최초, 앞전의 내용이 현재를 분석, 미래를 예측하는데 중요한 단서(데이터, 기억)

구조 (전통적인 딥러닝 모델)

은닉층에서 순환 후 출력한다

RNN(Recurrent Neural Network)

 

  • 은닉층 기준 입력은 2개
    • Xt : 현재 시점(t)의 입력
      • 특정 토큰, 특정시간대의 데이터
    • Ht-1 : 이전 시점(t-1)의 은닉층의 상태
      • 앞전 입력들에 대한 기억(중요한 정보만)
        - 층의 관점에서는 입력->은닉(순환입력)->출력 이렇게 정리
        - 은닉에 입력되는 정보는 이전시점의 은닉층 상태정보
        - 이전 시점의 은닉층 상태정보는 곧 과거 중요한 기억
        - 과거 중요한 기억은 이전에 입력한 데이터중 중요한 정보
    

  • 과거의 입력은 현재의 은닉층의 상태에 영향을 미친다
    • 과거의 입력 => 중요한 정보 => 지속적으로 영향을 미침
    • 위의 과정을 메모리(기억)로 표현 => 과거의 중요 기억을 유지
  • 단점
    • 문장이 길고(순서가 많이 지나감), 데이터가 많아지면(시간이 많이 흐르면)
      • 최초(초기) 영향을 크게 준 정보들이 희소해 짐
        • 장기기억 소실 문제 발생
    • 장기기억 소실 문제 발생 세부 내용
      • 오차역전파 수행시(최적화)
        • 기울기 폭주 (Gradient Exploding)
        • 기울기 소실 (Gradient Vanishing)
  • 종류
    • 기본 모형 : SimpleRNN, Vanilla RNN
    • 초기 입문형, 사용 X

RNN 도식화, 지금 사용하진 않는다

LSTM(Long Short-Term Memory)

 

  • 장기기억소실 문제 해결하기 위해 등장
    • 해결 : 장기기억선 생성
  • 단점
    • 학습 파라미터 증가 -> 학습 비용 증가

  • Ct
    • 장기기억선, 중요내용을 장기간 보전(메모리셀)
      • LSTM Cell
  • 장기기억선
    • 입력
      • ft
        • Fotget gate
        • 잊혀질 데이터, 중요하지 않는 정보 제거
      • it
        • Inut gate
        • 신규 입력, 중요한 정보 입력
  • 출력게이트
    • Ot
      • 은닉층으로 진입
      • 입력, 이전시간대 은닉상태값, 장기기억값 연산 -> 이번시간대의 은닉상태값 결정
      • 일부는 출력으로 진행-> 값을 출력
        • 다음 토큰 예측(문장 생성)하여 출력
        • 다음 토큰을 예측(번역)하여 출력

GRU(Gated Recurrent Unit)

 

  • LSTM의 학습 파라미터를 줄인다(목표)
    • 성능은 더 우수하게 구현
  • 원리
    • 장기기억선 제거
    • 은닉층에 시간의 순으로 계속 연결된 은닉상태값을 보관하는 라인을 장기기억선으로 간주
      • h0 ~ ht-1 ~ ht : 여기에 메모리 셀 부여
      • LSTM의 gate 방식을 적용

  • 시계열 데이터 문제 해결
    • LSTM, GRU 활용 -> 자체 모델로 구성
      • 해당 주류 모델들은 딥러닝엔진에서 대부분 제공함
    • 제조. 금융 부분 모델은 위의 형태를 주로 사용 (몇년가 흐름) -> 현재 LLM 활용(의존성 존재. 데이터 외부유출 문제)

순환신경망 입출력 구조에 따른 문제 해결

 

  • 문제 유형 (입력대 출력기반)
    • many-to-many
      • 기계번역(비대칭), 챗봇(대칭), 질문과 답변(대칭)
    • many-to-one
      • 감정분석, 토픽/키워드/헤드라인 추출, 요약
    • one-to-many
      • 생성(글쓰기,...)
      • 이미지 -> 이미지에 대한 설명생 성(캡셔닝)

입출력 구조에 따른 다양한 도식화들

 

  • 2022년까지는 자연어 분야는 아직 정복해야할 딥러닝 분야로 인식
    • 비전분야는 거의 정복 완료
    • LLM의 등장으로 거의 완료되는 수준으로 진화
      • 트랜스포머 기반
 

트랜스포머 기반

 

어텐션


  • Attention is All You Need
  • 구글 제안 (2017)
  • RNN 문제점 개선
    • 장기기억 소실 문제
    • 핵심 아이디어
      • 토큰단위(중심)에 가중치를 부여 -> 기억을 이어가자
      • 예측 단어에 연관되어 있는 단어들에 집중(Attention)하여 검토 다음 단어를 선정
      • 인코더-디코더 구조에서 개념 적용
      • 대량의 데이터 학습이 필수
  • 순서
    • 인코더-디코더 구조 모델 이해
      • Seq-to-Seq -> 기계번역
    • 어텐선
      • 인코더-디코더
        • 트랜스포머 구현
        • Bart 구현
      • 인코더
        • Bert
      • 디코더
        • GPT 2
 

트랜스포머 (인코더-디코더 기반)

 

  • 2017
    • 구글
      • 시퀀스를 가진 데이터 위한 새로운 신경망 제안
    • 목표
      • RNN의 모든 비용적 측면 개선
      • 효율적 전이학습
      • 다양한 코퍼스 적용(다국어, 전세계 언어)
    • 기술적 특징
      • 어텐션 매커니즘 적용
      • 인코더-디코더 적용
        • 생성모델(U-Net, Gan,..)
      • 전이학습 적용
      • 장기기억처리에 대한 토큰에 가중치부여 전략
  • 허깅페이스
    • 트랜스포머 기반 모델의 생태계
      • 신규제작
      • 전이학습 모델 제공
    • !pip install -q transformers
    • 스타일
      • 토크나이저, 모델 2개 획득
        • 레파지토리 경로를 사용
      • 파인튜닝, 원샷, 제로샷, 퓨샷을 이용하여 사용

어텐션 논문에 제안한 트랜스포머 형태

 

인코더-디코더 기반

 

  • Bart
  • Meta도 집중진행
 

인코더 기반


  • Bert => Electra
    • 이진분류, 다중분류 => 감정분석
  • Google

디코더 기반

 

  • Gpt
    • 문장생성 => 기계번역, 질문답변, 문장생성
  • openai-ms
    • win!!
 

LLM 기반

 

  • LLM을 이용한 결과물 => 생성형, 생성모델, ..
 

생성모델


  • 머신러닝/딥러닝 모델
    • 분류 모델 (판별 모델)
      • CNN, RNN, 머신러닝 알고리즘
      • 입력 X를 넣어서 정답 Y를 예측하는 확률 계산
    • 생성 모델 (Generative model)
      • 광역
        • 간단한 재료를 넣어서 데이터 X를 생성하는 기술
        • 모델이 샘플링을 진행 -> 새로운 데이터 X가 생성된다
          • X : 이미지, 영상, 텍스트, 사운드/음성,..
      • 영역
        • 새로운 콘텐츠 창조
        • 부족한 데이터 생성
 

  • 발전 모델 방향
    • 지도적 생성 모델 - 머신러닝-비지도학습-차원축소 => 새로운 차원 생성
      • PCA, LDA, ..
    • 비지도적 생성 모델
      • 통계적 생성 모델
        • GMM, KDE,..
      • 딥러닝 생성 모델
        • Explicit Density
          • AE (Auto-Encoder)
          • VAE (변이형 Auto-Encoder)
            • U-Net:의학분야 영상진단 주로 사용
            • 인코더-디코더 개발
        • Implicit Density
          • GAN
            • 적대적 인공 신경망
            • 생성자, 판별자 경쟁
          • DCGAN, StyleGAN(스타일전이),..
        • Flow Model
        • Diffusion Model (가장 트랜드)
          • 확산 모델
          • GPT - DALL-E
            • 이미지 생성, 영상 생성
            • LLM에 접목
          • Stable Diffusion
            • 이미지 생성, 영상생성
          • D-ID
            • 영상, 보이스 생성

오늘의 수업은 여기까지.

 

데이터 엔지니어 파트, 그리고 머신러닝과 딥러닝을 직무로 해도 현재 수업내용을 사용해서 일을 하진 않지만 우리가 역사를 배우듯 기술의 역사와 알고리즘 원리를 이해하고 숙지해두는것이 훨씬 더 추후에 도움이 되는 내용들이다

 

미래는 과거의 연장선이다~~