오늘은 딥러닝 파트를 시작하였고
개요
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가면 조 단위 - 퍼셉트론 (인간의 뇌신경(뉴런)을 본따서 만든 실물장비)고안, 제안
- 1943
- 최신 이벤트
- 2007 : 아이폰(스마트폰 등장) -> 빅데이터 출현
- 피처폰 -> 스마트폰 전환되던 시기
- 2005 ~ 2010 : 클라우드
- 2015 ~ 2016
- 알파고 출현, 파이썬 교육 기업중심으로 전국적으로 시작되었음
- AI 관심, 집중 연구 시작
- 2007 : 아이폰(스마트폰 등장) -> 빅데이터 출현

기초이론
단일 퍼셉트론
- 간단한 구조
- 입력 2개를 넣어서출력 도달
- 인공신경망 = 입력층(x) + 출력층(y)

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

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


입력층과 출력층 사이에 중간층(은닉층) 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 조정(최적화, 미세조정)
- 순전파
- 1986년 제안 -> 딥러닝 학습이 정립
- 활성화 함수
- 기존 : 시그모이드(로지스틱 회귀에서 사용)
- 신규 : tanh, relu 계열, softmax, ....
- 값들이 조정!! -> 학습률 상승
- 최적화 기법
- 기존 : 경사 하강법(GD)
- SGD
- 모멘텀 -> Adam
- 아다그리드 -> ... -> Adam
- SGD
- 기존 : 경사 하강법(GD)
- 오차 역전파
- 결정적 요인 (15년 이내 모두 발생)
- 이미지 인식 대회에서 딥러닝 머신러닝 이겼음(패러다임 전환)
- 알파고
- 장비의 발전
- GPU(엔비디아) + CUDA(아키텍처)
- 반도체 발전
- 인터넷 속도 박전
- 빅데이터 시대 도래 <- 애플의 아이폰!!
- 클라우드 발전
- 가속효과!!
- 다중 퍼센트론 제안
- 2023년 LLM등장으로 새로운 패러다임 전환 진행
- 기존 예상치보다 10~15년이 더 빨랐음!!
딥러닝 구현에 필요한 요소
라이브러리 혹은 엔진(프레임웍)
텐서플로우 (with keras)
- 점유율 1위(?)
- 구글
- 개발 스타일 3가지 방식
- keras(문과생을 위한 딥러닝 엔진-인터페이스)를 이용한 방식 -> 추천방식(빠르게 구성)
- 어려운 부분은 내부에서 숨기고, 인터페이스 중심으로 구성
- 텐서플로우 low level 구성 (난이도 높음)
- 텐서플로우 1.0 x 마이그레이션 방식 (오래되었음)
- keras(문과생을 위한 딥러닝 엔진-인터페이스)를 이용한 방식 -> 추천방식(빠르게 구성)
- 파이썬으로 플로우 구성 후 실제 러닝 등 구동은 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를 학습에 이용할 수 있게되었다(생태계)
- CUDA 생태계 구성
- AMD
- ROCm
- 딥러닝 엔진 회사들의 지원이 늦었음 (ROCm 개발 및 안정화가 너무 늦었음)
- 애플
- 인텔 + AMD
- GPU 사용 X
- 애플실리콘 (2020년)
- 자체 GPU 사용 가능하게 구성 -> 2021년부터 가능해짐(아나콘다, 미니콘다 환경 제공...)
- 맥북으로 딥러닝 학습은 애매함 -> 클라우드, 딥러닝 워크스테이션으로 가랏(2022~)
- eGPU
- 인텔 + AMD
- NVIDIA
- 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(인코더, 디코더), ....=> 생성모델로 확장
- .. 다양한 신경망 존재
- 일반 : ANN, DNN(은닉층이 2개 이상이면 DNN이라고 표현함)
- 본 구성은 DNN방식으로 구현하여 인공신경망을 작성
- 엔진 : 텐서플로우 + keras (권장형)
- 구성 컨셉
- 인공 신경망 구성 (스타일 3가지 존재)
- Sequential 객체를 통해서 층(layer)을 추가하는 방식으로 구성
- 다중 퍼셉트론을 기반으로 은닉층을 추가(단순하게 1개만 적용)
- 입력층 : (? , 17) # 데이터 개수에 상관없이, 피처는 17개
------
은닉층 : (? ,데이터 부풀리기 처리 : 30 )# 30은 설정임
------
출력층 : (? , 1) # 30개의 입력이 1개 값으로 수렴하게끔(이진분류, 악성|양성) - 데이터 1개가 인공신경망을 통과하여 올바른 정답에 잘 도착하게 하기 위해 -> 파라미터를 미세조정 (최적화) -> 훈련 데이터 전체가 대부분 정답에 잘 도달하도록 가중치, 편향을 조절 -> 어느정도 수렴하면 학습 종료함
- 인공 신경망 구성 (스타일 3가지 존재)
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)
- 제로샷
- 파인 튜닝
- 사전 학습된(pre-trained model,특정 목적에 맞게 학습된 업스트림)을 가져와서 여러 방법(다운스트림)으로 학습
- (일반적) 학습
- 데이터 사이즈 관련해서
- 배치 학습
- 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)의 은닉층의 상태
- 앞전 입력들에 대한 기억(중요한 정보만)
- 층의 관점에서는 입력->은닉(순환입력)->출력 이렇게 정리 - 은닉에 입력되는 정보는 이전시점의 은닉층 상태정보 - 이전 시점의 은닉층 상태정보는 곧 과거 중요한 기억 - 과거 중요한 기억은 이전에 입력한 데이터중 중요한 정보 - Xt : 현재 시점(t)의 입력
- 과거의 입력은 현재의 은닉층의 상태에 영향을 미친다
- 과거의 입력 => 중요한 정보 => 지속적으로 영향을 미침
- 위의 과정을 메모리(기억)로 표현 => 과거의 중요 기억을 유지
- 단점
- 문장이 길고(순서가 많이 지나감), 데이터가 많아지면(시간이 많이 흐르면)
- 최초(초기) 영향을 크게 준 정보들이 희소해 짐
- 장기기억 소실 문제 발생
- 최초(초기) 영향을 크게 준 정보들이 희소해 짐
- 장기기억 소실 문제 발생 세부 내용
- 오차역전파 수행시(최적화)
- 기울기 폭주 (Gradient Exploding)
- 기울기 소실 (Gradient Vanishing)
- 오차역전파 수행시(최적화)
- 문장이 길고(순서가 많이 지나감), 데이터가 많아지면(시간이 많이 흐르면)
- 종류
- 기본 모형 : SimpleRNN, Vanilla RNN
- 초기 입문형, 사용 X

LSTM(Long Short-Term Memory)
- 장기기억소실 문제 해결하기 위해 등장
- 해결 : 장기기억선 생성
- 단점
- 학습 파라미터 증가 -> 학습 비용 증가
- Ct
- 장기기억선, 중요내용을 장기간 보전(메모리셀)
- LSTM Cell
- 장기기억선, 중요내용을 장기간 보전(메모리셀)
- 장기기억선
- 입력
- ft
- Fotget gate
- 잊혀질 데이터, 중요하지 않는 정보 제거
- it
- Inut gate
- 신규 입력, 중요한 정보 입력
- ft
- 입력
- 출력게이트
- Ot
- 은닉층으로 진입
- 입력, 이전시간대 은닉상태값, 장기기억값 연산 -> 이번시간대의 은닉상태값 결정
- 일부는 출력으로 진행-> 값을 출력
- 다음 토큰 예측(문장 생성)하여 출력
- 다음 토큰을 예측(번역)하여 출력
- Ot

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

- 시계열 데이터 문제 해결
- LSTM, GRU 활용 -> 자체 모델로 구성
- 해당 주류 모델들은 딥러닝엔진에서 대부분 제공함
- 제조. 금융 부분 모델은 위의 형태를 주로 사용 (몇년가 흐름) -> 현재 LLM 활용(의존성 존재. 데이터 외부유출 문제)
- LSTM, GRU 활용 -> 자체 모델로 구성
순환신경망 입출력 구조에 따른 문제 해결
- 문제 유형 (입력대 출력기반)
- many-to-many
- 기계번역(비대칭), 챗봇(대칭), 질문과 답변(대칭)
- many-to-one
- 감정분석, 토픽/키워드/헤드라인 추출, 요약
- one-to-many
- 생성(글쓰기,...)
- 이미지 -> 이미지에 대한 설명생 성(캡셔닝)
- many-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개 획득
- 레파지토리 경로를 사용
- 파인튜닝, 원샷, 제로샷, 퓨샷을 이용하여 사용
- 토크나이저, 모델 2개 획득
- 트랜스포머 기반 모델의 생태계


인코더-디코더 기반
- Bart
- Meta도 집중진행
인코더 기반
- Bert => Electra
- 이진분류, 다중분류 => 감정분석
디코더 기반
- 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(스타일전이),..
- GAN
- Flow Model
- Diffusion Model (가장 트랜드)
- 확산 모델
- GPT - DALL-E
- 이미지 생성, 영상 생성
- LLM에 접목
- Stable Diffusion
- 이미지 생성, 영상생성
- D-ID
- 영상, 보이스 생성
- Explicit Density
- 통계적 생성 모델
- 지도적 생성 모델 - 머신러닝-비지도학습-차원축소 => 새로운 차원 생성
오늘의 수업은 여기까지.
데이터 엔지니어 파트, 그리고 머신러닝과 딥러닝을 직무로 해도 현재 수업내용을 사용해서 일을 하진 않지만 우리가 역사를 배우듯 기술의 역사와 알고리즘 원리를 이해하고 숙지해두는것이 훨씬 더 추후에 도움이 되는 내용들이다
미래는 과거의 연장선이다~~
'ASAC-SK플래닛 T아카데미 데이터 엔지니어' 카테고리의 다른 글
| 25.12.16 49일차 [딥러닝_전이학습 | 딥러닝_NLP_트랜스포머기반_전이학습_GPT2기반_제로샷러닝_리뷰감정분석] (1) | 2025.12.16 |
|---|---|
| 25.12.15 48일차 [딥러닝_NLP_워크플로우_챗봇구성, 활성화 함수] (0) | 2025.12.15 |
| 25.12.11 46일차 [머신러닝_비지도학습_군집화_차원축소] (0) | 2025.12.11 |
| 25.12.11 SK플래닛 T아카데미 | AI활용 데이터 엔지니어 과정 2기 모집 (0) | 2025.12.11 |
| 25.12.09 44일차 [머신러닝_지도학습_회귀] (0) | 2025.12.10 |