오늘은 딥러닝의 남은 파트인 전이학습 수업을 한 후
NLP 트랜스포머 기반(GPT2) 전이학습을 제로샷 러닝으로 그대로 가져와서 챗봇을 만드는 실습 수업을 진행했다.
개요
- 목적
- 시간 단축(비용 절감)
- 누군가(기관,회사,개인,단체,..) 오랜시간, 많은 데이터를 이용하여 학습한 모델(인공신경망 구조)을 바로 사용 혹은 추가 데이터로 학습하여 사용 가능하게 하는 학습법
- 빠르게 특정 수준의 모델을 확보/활용 (즉시 전력)
- 시간 단축(비용 절감)
- 전이학습(Transfer learning)
- 지식의 재사용
- 처음부터 학습하지 않고(최초 모델은 전이 학습이 아님), 새로은 과제를 해결하는 목표
- 트랜스포머 기반은 모델은 모두 지원
- 특정 테스트(목적)에서 학습된 모델(업스트림)을 이용하여 다른 테스크(목적,다운스트림)에 재사용하는 기법
- 업스트림된 모델 => pre-trained(사전 학습된) 모델
- 허깅페이스, 각종 허브에 등록되어 있음
- 예시
- LLM 인공신경망 구조
- 공개
- 라마(meta), ..
- 비공개(기업형)
- gemini, gpt,
- 공개
- LLM 인공신경망 구조
- 지식의 재사용
용어
- 업스트림 (백본)
- 특정 목적으로 사전 학습된 모델
- VGG16 모델
- 1000개의 카테고리(이미지 인식 대회 문제)를 분류 -> 다중분류
- 공인된 모델
- yolo, bert, bart, gpt, ...
- 다운스트림
- 새로 해결해야 하는 문제를 처리할 모델(신규 학습이 필요함)
- 예시
- VGG16모델 가져와서 개나 고양이(기존 카테고리에 없던)을 분류한다 (이진분류)
- 전이학습 기법을 통해서 새로운 서비스를 창출한 테스크임.
형태




학습 형태
- 튜닝 (기존 가중치 전부/일부 재사용x)
- 파인튜닝
- 기존의 가중치를 무시 혹은 재학습
- 새로운 데이터를 주입하여 전면 가중치 재조정
- 새로운 데이터에 적합한 모델로 변화
- 시간, 비용이 발생(학습 비용이 비쌈)
- 프럼프트 튜닝
- 기존 신경망에 추가(변경)된 부분만 학습
- 출력층, 윗 단계까지 통상 적용
- 기존 신경망에 추가(변경)된 부분만 학습
- 파인튜닝
- 인컨텍스트 러닝
- 기존 모델을 유지 -> 다운스트림의 새로운 데이터를 0 ~ 1 ~ n개 만 통과시켜서 (가중치)미세 조정 후 사용
- 제로샷 러닝
- 업스트림 모델을 다운스트림에 그대로 사용
- 원샷 러닝
- 데이터 한 건만 학습후 다운스트림에 사용
- 한 건 적용 후 확인 후 사용
- 퓨샷 러닝
- 데이터 몇 건만 학습후 다운스트림에 사용
- 몇 건 적용 후 확인 후 사용
사전 학습된 모델
- Tensorflow Hub
- 여러 허브 통합
- pyTorch Hub
- 커뮤니티, 트랜스포머 계열
- 허깅페이스 https://huggingface.co/

VGG16 모델을 가져와서 약간의 수정을 거치고 이진분류에 사용해 볼 예정이다.
가장 마지막층은 누락시키고 모델의 가중치는 그대로 사용한다.



Total params: 15,239,105 (58.13 MB)
Trainable params: 524,417 (2.00 MB) -> 다운스트림(악성|양성, 스팸|정상, 남자|여자 등)을 위해서 학습 시 최적화해야할 파라미터의 총 수
Non-trainable params: 14,714,688 (56.13 MB)
이렇게 전이학습 과정이 끝난다. 기존의 모델을 가져와서 이진분류용 모델로 변경한 것이다.
다운스트림을 위해서 학습시켜야 할 파라미터의 양이 엄청나게줄었다,
NLP_트랜스포머기반_전이학습_GPT2기반_제로샷러닝_리뷰감정분석
개요
- 트랜스포머(인코더+디코더) 기반 GPT2(디코더기반)을 (다운스트림:한국어에 최적화되게) 파인튜닝한 모델을 제로샷 러닝 기법으로 사용
- 전이학습
- 업스트림 모델 : GPT2
- 다운스트림 모델 : SKT/kogpt2-base-v2
- skt에서 한국어 특화되게 GPT2를 파인튜닝함
- 전이학습
- 허깅페이스 주소
- url
- repo
- skt/kogpt2-base-v2
- 데이터
- 한국어 문장 생성을 위해서 40GB의 한국어 데이터로 파인 튜닝 진행(새로 학습)
- 용도
- 문장 생성
- 단어(토큰) => 다음 단어(토큰) 추천(TOP5등 설정 가능함(랜덤 선택)-> 의외성 부여 -> 창작성을 높임, 최적)
- 문장 생성
- 학습
- 제로

토크나이저와 모델을 가져온다.


가져온 모델에 별 다른 수정을 하고 코드를 많이 입력하지 않아도 가져온 모델로 한국어 데이터를 읽어와서
내가 입력한 글을 벡터화 시키고, 그 벡터값과 가장 가까운 벡터를 모델이 스스로 찾아서 그다음으로 오기 가장 적합한 말을 찾아서 전송한다, 그리고 그 벡터들을 다시 디코딩하여 한국말로 변환시켜 프린트한다.
현재 내용도 좀 이상하고 응답속도도 느리지만 기본 원리를 파악하게 되었다.
챗GPT의 원리도 이와 동일하다.
구현2 스트리밍 및 tpo5중 랜덤 선택 - 창작성(의외성 조절)을 올림

- 원리
- 문장 제시 -> 토크나이저를 이용하여 백터화 -> 해당 벡터를 기반으로 다음에 나올 토큰 예측 (확률에 의해서 여러개 제시, 별도 언급이 없으면 최고 높은 확률을 받은 토큰이 출력됨(토큰은 여러개 추천함)) -> 반복 ... => 제한 토큰 수에 도달하면 종료 => 응답 => 완성된 문장 확인 가능함

이렇게 다섯개가 '공부를 잘하기 위해서는' 다음으로 오기 가장 적합한 토큰값을 가진 것이다.

ai의 대답에 창의성을 부여하였다. 그리고 랜덤값을 주어서 다른 시나리오로 대답이 나오도록 설정한 것이다.
오늘의 수업은 여기까지.
'ASAC-SK플래닛 T아카데미 데이터 엔지니어' 카테고리의 다른 글
| 25.12.18 51일차 [LLM | Bedrock, 프롬프트 엔지니어링, 모델별 특화 예시] (1) | 2025.12.18 |
|---|---|
| 25.12.17 50일차 [딥러닝 | AWS sagemaker , NO-CODE GUI 기반 딥러닝 실습 / LLM | Bedrock] (0) | 2025.12.17 |
| 25.12.15 48일차 [딥러닝_NLP_워크플로우_챗봇구성, 활성화 함수] (0) | 2025.12.15 |
| 25.12.12 47일차 [딥러닝 | 개요, NLP 모델] (0) | 2025.12.15 |
| 25.12.11 46일차 [머신러닝_비지도학습_군집화_차원축소] (0) | 2025.12.11 |