Deep Learning 기초 지식
딥러닝의 발전 5단계
- AI/ML/DL 관점에서 크게 5단계로 개발 방법론이 진화
- 세 단계로 나누면 SW 1.0, SW 2.0, SW 3.0으로 구분
SW 1.0
Rule-based Programming
- 사람이 이미지의 특징을 직접 설계해 조건에 맞으면 고양이로 판단
- 예: if ear_length > 10 and nose_color == 'black': cat
SW 1.5
Conventional Machine Learning
- 특징 추출은 사람이 설계하고, 연산 조건은 기계가 학습
머신러닝 과정
- 학습 데이터 준비
- 이미지 수집, 특징 정의, 학습 데이터 생성
- 모델 학습
- Try & Error 방식으로 최적의 연산 집합을 찾음
SW 2.0
Deep Learning
- 출력 계산을 위한 모든 연산을 기계가 고안
- CNN, RNN 같은 구조를 사용해 데이터에 맞는 연산 구조를 잡음
- 더 많은 데이터를 필요로 함
텍스트 데이터 준비 과정
- 텍스트 수집
- 토큰화(텍스트를 의미 단위로 분할)
- 학습 데이터 생성
SW 2.5
Pre-training & Fine-tuning
기존 방식의 문제: 태스크가 바뀔 때마다 다른 모델 필요
해결 방법: Pre-training + Fine-tuning
- Step 1: Pre-training
- 일반적인 특징을 학습
- Step 2: Fine-tuning
- 기존 특징 추출은 고정하고, 특정 태스크에 맞는 연산만 학습
텍스트 데이터 관점 (GPT-1)
- Step 1: Pre-training
- 라벨링 없이 인터넷 데이터를 활용해 학습(Self-supervised Pre-training)
- Step 2: Fine-tuning
- 텍스트 분류와 같은 특정 태스크에 미세 조정
SW 3.0
Big Model & In-context Learning
- 태스크별로 모델을 새로 만들거나 데이터를 모을 필요가 없음
- 특정 모델 크기 이상부터 Fine-tuning 없이도 높은 성능 가능
학습 방식
- Zero-shot: 예시 없이 해결
- One-shot: 예시 하나 제공
- Few-shot: 예시 몇 개 제공
딥러닝 기술 종류: 학습 방식에 따른 구분
교사 학습 (Supervised Learning)
특정 입력에 대한 정답을 알려주는 방식으로 학습
- 라벨링 데이터
- 직접 피드백
- classification
- regression
원하는 정답을 직접적으로 알려주는 방식으로 학습 -> 데이터가 정말 중요함 -> 학습 데이터, 평가 데이터로 나눔
정답 데이터를 확보하는 작업 = 라벨링, 어노테이션
분류 (Classification)
기정의된 클래스들 중 입력이 어느 클래스에 해당하는지 맞추는 태스크
결과값은 클래스의 종류 중 하나이므로, 양수의 정수값으로 보통 표현
ex) 음식의 종류 분류 프로그램
회귀 (Regression)
입력 데이터에 대한 실수 혹은 실수의 집합(벡터) 출력으로 맵핑해주는 태스크
ex) 음식의 온도 예측 프로그램분류 + 회귀분류와 회귀를 동시에 진행하는 경우 존재
객체 검출
ex) 이미지 내 음식들 종류와 위치 라벨링
노이즈 (Labeling Noise)
교사 학습에서 중요한 것은 데이터의 품질이고, 라벨링 노이즈에 따라 교사 학습의 성능이 좌지우지 됨
라벨링 결과에 대한 노이즈 = 라벨링 작업에 대해 일관되지 않음의 정도 라벨링 작업에 대해 일관되지 않음의 정도
비교사 학습 (Unsupervised Learning)
특정 입력에 대한 정답을 알려주지 않고 학습시키는 방법
- 라벨링 데이터 X
- 피드백 X
- 숨은 구조 찾기(정답을 간접적으로 찾기)
- Clustering 군집화
- Demensionally Reduction 차원 축소
Clustering (군집화)
- 유사한 특징끼리 그룹화
차원 축소 (Dimensionality Reduction)
Auto Encoder
입력 데이터 n개 ---차원축소---> 출력 ---차원확대---> 입력
n차원으로 축소했을 때 입력이 복원이 가능한 정도의 정보는 담고 있어야함
왜 줄일까?
- 정보 압축 : 이미지/비디오/오디오 압축
- 정보 시각화 : 사람이 눈으로 확인할 수 있는 것은 3차원까지
- 정보 특징 : 중요한 특징을 추출하여 분석에 사용 10개 클래스가 잘 구분되는 2차원의 특징 벡터를 찾는다면 훨씬 분류 성능이 뛰어난 모델을 만들 수 있음
강화 학습 (Reinforcement Learning)
주어진 환경에서 더 높은 보상을 위해서 최적의 행동을 취하는 정책을 학습
에이전트 / 보상 / 행동 / 환경
- 라벨링 데이터
- 지연 피드백
- 보상 신호
model - free 강화학습 2가지 AI
- 정책 AI : 이런 이미지가 들어왔을 때 어떻게 행동해야하는지 예측하는 AI
- 보상 AI : 현재 상태에서 이런 행동을 하게 되면 보상이 얼마일거야 라고 예측하는 AI 모델
딥러닝 기술 구분: 데이터 형식에 따른 구분
정형 데이터 (Tabular Data)
- Excel 같은 표 형식 데이터
- 회귀 및 분류 태스크에 사용
비정형 데이터 (Unstructured Data)
- 이미지, 텍스트, 음성 같은 데이터
컴퓨터 비전 (CV)
: 입력으로 이미지나 동영상 데이터를 받는 AI
- ChatGPT 이전에는 가장 많이 상품화된 AI 기술이었으며, 딥러닝 기술을 선도함
ex) 입력 데이터가 이미지 ⇒ cv
얼굴 인식 → 누구의 얼굴? : 분류
얼굴 검출 → 얼굴의 위치? : 회귀
성별 인식 → 성별? : 분류
나이 인식 → 나이? : 회귀
자연어 처리 (NLP)
: 입력으로 텍스트 데이터를 받는 AI
ex)
문장 작성 → 주어진 글에 이어서 문장 작성 : 생성
혐오글 분류 → 혐오적인 표현 존재 여부 : 분류
번역 → 다른 나라 언어로 번역 : 생성
감정 분류 → 글에서 느껴지는 감정 : 분류
- 각 NLP 태스크 별로 별도의 NLP AI를 만들어야 했지만, LLM 출현으로 하나의 모델로 다 대응 가능 (SW 3.0)
음성 인식/생성
: 입/출력으로 음성 데이터가 활용되는 AI
ex)
음성 인식 → 음성 속에 담긴 글자 인식 : 인식
감정 분류 → 음성 속에 담긴 감정 분류 : 분류
나이 인식 → 발화자의 나이 인식 : 회귀
화자 분류 → 화자 별로 신호 분류 : 분류
- 출력 데이터가 텍스트 인 것도 있어서 NLP와 함께 쓰이기도 함
딥러닝 기술 구분: 태스크 종류에 따른 구분
인식 기술 (Recognition)
- 비정형 데이터에서 특정 정보를 추출
- 예: 개와 고양이 구분
생성 기술 (Generation)
- 의도된 정보를 담은 비정형 데이터 생성
- 예: 이미지 생성, 텍스트 생성
인식 기술이 먼저, 후에 생성 (생성이 더 어려움)내가 만들어낼 수 없다면, 완벽하게 이해한 것이 아니다.
이미지 생성 모델의 역사
- 2014 GAN(Generative Adversarial Network)
: 이미지 생성은 가능하지만 통제력은 다소 부족해서 상업적으로는 사용이 어려운 상황 - 2021 DALL-E (OpenAI)
: 통제력 달성을 입력을 텍스트로 받아서 해결 ” 아보카도 모양 안락 의자” - 2023 Stable Diffusion (Stability)
: 상업적으로도 이용가능하면서 오픈소스 → 관련 산업 급격히 성장 원하는 그림에 대해서 상세하게 묘사 ⇒ Prompt Engineering
텍스트 생성 모델의 역사
- 2023 ChatGPT(OpenAI) : 입력된 텍스트에서 스스로 태스크를 파악하여 그에 맞는 결과를 텍스트 출력
- 2018년 부터 ChatGPT의 근간이 되는 LLM 기술이 개발되기 시작
- 5년 후 일반 사용자가 느꼈을 때 상품화된 기술이 등장