1단계 : 규칙 기반 프로그래밍 (Rule-based programming) -SW 1.0(사람의 관여가 있음) - 목표 달성에 필요한 연산 방법을 사람이 전부 고안 - 계산을 사람이 설계 - 예시) 개,고양이를 구분하는데, 코의 길이/눈의 색상/귀의 길이 등등을 사람이 전부 고민을 해서 설계를 함
2단계 : 전통 머신 러닝 기법 (Conventional Machine Learning) -SW 1.5 (사람의 관여가 있음) - 특징값을 뽑는 방식은 기존처럼 하되, 특징값들로 판별하는 로직은 기계가 스스로 고안 - 예시) 개,고양이를 구분하는데, 무슨 특징(코의 길이, 눈의 색상 등등)이 중요한지는 사람이 정함 : hand designed feature 하지만, 판단은 기계가 함.
- 동작법
- 1-1. 이미지 수집 - 1-2. 특징 정의 /구분을 하기 위해서 어떤 특징이 있는지 : hand designed feature - 1-3. 학습 데이터 정의 : 특징을 숫자로 만들어줌 -> 사람이 프로그램으로 만들어야함 : 사람이 설계 - 2-0. 예측과 오차 : 오차가 최소한으로 연산을 하는 것이 핵심!!!
- 모델 학습 - Try & Error 방식으로 최적의 연산 집합 - 랜덤하게 만든 연산이 얼마나 좋은지 오차로 판단 - 특징값을 뽑아서, 그에 대한 연산을 붙임 : 모든 사진에 대해서 오차를 구함 -> 모든 값에 대해서 오차의 합/평균을 구함. - 이렇게 try 1번을 하여, 계속 랜덤try를 통해 오차를 추가하고, 가장 오차가 적은 값을 고름
- 최적의 연산 집합은 모든 Try 중에 오차가 제일 작은 것! = 최적의 모델 = 학습 완료된 모델 = 추론 시 사용되는 모델 (서비스 사용 시)
3단계 : 딥러닝 (Deep Learning) - SW 2.0(사람이 하나도 관여를 안하기 시작) - 딥러닝부터 출력을 계산 하기 위해 모든 연산들을 기계가 고안 - 입력부터 모든 계산을 기계가 설계하기 시작. - 연산이 엄청 많음(학습이 오래 걸리고 오차가 큼) - 자유도가 너무 높아 연산들의 구조를 잡고 사용 : 여기 구조가, 연산구조( 예) CNN, RNN, etc)이다.
4단계 : 사전 학습과 미세 조정 (Pre-training & Fine-tuning) : SW2.0 -> 기존의 문제점 : 분류 대상이 / 태스크가 바뀔 때마다 다른 모델이 필요 - 예시)개와 고양이를 구분하는 모델을 만들었는데, 판다와 토끼를 구분하려면 처음부터 다 다시 모델을 만들어야함 - 요구사항에 따라 모델이 바뀌는 것이 비효율적임 : 산업적으로 빨리 퍼지지 못함
- 학습
- 1. Pre-training : 모든 동물에 대한 모델을 학습함 -> 추출에 대한 연산값이 나옴 - 2. Fine-tuning : 요구사항이 오면, 특징추출부분의 연산은 고정하고, 맵핑 쪽에 해당하는 연산만 새로 학습 - 여전히 태스크마다 다른 모델이 필요하지만 필요한 데이터 수가 적어지고 개발 속도가 올라가게 된다!
- 텍스트 데이터 분류 : GPT1 방식 - 1. Pre-training - 라벨링이 없어도 학습이 되는 것을 생각해냄 -> 인터넷 상의 수많은 데이터를 활용하려면 태스크 정답을 세팅하는 작업이 없어야 훨씬 효율적!! - 자동으로 정답을 뽑아냄( Self-supervised pre-training ) - 사람이 라벨링이 없음( Un-supervised pre-training) - 2. Fine-tuning / Transfer Learning - pre-traing의 피쳐는 그대로 두고, mapping만 따로 모아서 정답을 둠 - 긍정부정은 사람이 라벨링을 하게 됨
- 텍스트 관점에서 GPT
5단계 : 초거대 모델과 제로샷/퓨샷 (Big Model & Zero/Few shot) : GPT 3 - 기존 4단계는 pre-traning 이후에 fine-tuning을 함 : 사람이 준비한 데이터로 텍스트 에 해당하는 데이터를 모아두고, 사람이 준비한 데이터로 -> 태스크 별로 모델이 각각 다르지만, 효율은 좋다.
-> in-context learning가 가능해짐 : 태스크별로 다른 모델이 필요가 없다 - 입력 태스크 에 태스크설명까지 포함함 - 태스크 별로 별도 모델 필요 없음, 태스크에 맞는 데이터 모을 필요 없음 - 특정의 크기 이상이 되어야 in-context learning이 가능함. - 텍스트를 다룰 때만 해당이 됨.
요약 - 입력문장이 있을때, 이 문장이 긍정인지 부정인지 판단하는 로직 1단계 : 필요한 연산들이 사람이 전부 설계 2단계 : 문장의 특징들은 사람이 설계하고, 어떤 값일때 긍정부정을 판단하는 것은 기계가 3단계 : 아웃풋까지의 모든 계산을 기계가 하는 방식(SW 2.0 방식) 4단계 : feature을 뽑는 부분만 미리 학습을 시켜두고 텍스트별로 맾핑은 살짝만 학습함-모델계발 효율성 증가 5단계 : 프리training만 많이 하고, 실제로 어떤 태스크를 수행하는지를 문장으로 입력을 넣어줌 -> 자동으로 출력( in-context learning) (SW 3.0방식)
딥러닝 기술 종류_학습방식에 따른 분류
- 프로그램은 특정 입력을 특정 출력이 나오도록 하는 연산의 집합 * 컴퓨터는 숫자만 이해하므로, 입력/출력 모두 숫자(들)
Data 데이터 - 입력 데이터가 무엇이냐? 정형, 이미지/동영상, 텍스트, 음성
정형데이터 - 구조화된 정보로 저장되어 있는 것이 정형데이터 - 표에 되어있는 데이터, 전통 머신러닝 기법 - 딥러닝을 통해서 비정형 데이터를 구조화된 정보로 바꿀 수 있게 되었음.
비정형 데이터 - 정형 데이터 외의 데이터는 다 비정형 데이터. - 딥러닝에 많이 사용됨 : 이미지/동영상, 텍스트, 음성 등등이 들어감
- 컴퓨터 비전(Computer Vision, CV) -입력으로 이미지나 동영상 데이터를 받는 AI
- ChatGPT 이전에는 가장 많이 상품화된 AI 기술이었으며, 딥러닝 기술을 선도 - 출력에 따라서 이름이 달라짐(분류, 회귀) - 이미지 복원 가능 - 예시 : 지문 인식, 명함/번호판/영수증 인식, 배경제거(누끼), 스타일 변환, 자율 주행, 동영상 요약(타임랩스)
- 자연어 처리 (Natural Language Processing, NLP) - 입력으로 텍스트 데이터를 받는 AI
- ChatGPT 이후 자연어 처리 관련 서비스/제품 들이 기하급수적으로 증가 - 현재, 딥러닝 기술을 선도 - 각 NLP 태스크 별로 별도의 NLP AI를 만들어야 했지만 (SW2.0) LLM으로 출현으로 하나의 모델로 다 대응 가능 (SW3.0)
- 음성 인식/생성 (Speech Recognition/Generation) - 입/출력으로 음성 데이터가 활용되는 AI -음성 인식은 출력이 텍스트 이므로 자연어 처리와 함께 사용되는 경우가 많음 - 음성이 입력인 경우 - 음성 생성은 출력 데이터가 음성인 경우
- 다양한 서비스 : 회의록 작성(클로바 노트), 동영상 편집, 음성인식, 인공지능상담원, 버츄얼 후면, 목소리 생성(클로바 보이스)
Learing 학습 - 어떤 방식으로 학습을 시키느냐?
교사 학습 - 특정 입력에 대한 정답을 알려주는 방식으로 학습
- 라벨링 데이터가 필요함(사람이 주로 하고, 요즘엔 인공지능이 하기도 함) - 분류(특성, 성격) 문제에 잘 함, regression(회귀 : 숫자 예측-주가, 날씨 등등)을 잘함
- 데이터가 정말 중요함 : 입력데이터 및 정답데이터로 구성 - 정답데이터를 확보하는 작업을 라벨링 (Labeling) 혹은 어노테이션(Annotation) - 데이터는 모델 학습을 위한 데이터와 모델 평가를 위한 데이터로 구분해서 사용 ( 학습 데이터의 일부로 평가하는 것은 마치 수능 문제로 공부해서 수능 치는 것과 유사 ) -> 제대로 평가가 안 됨 - 분류 (Classification) : 기정의된 클래스들 중 입력이 어느 클래스에 해당하는지 맞추는 태스크 - 회귀 (Regression) : 입력 데이터에 대한 실수 혹은 실수의 집합을 (벡터) 출력으로 맵핑해주는 (Mapping) 태스크 - 분류 (Classification) + 회귀 (Regression) : 분류와 회귀를 동시에 진행하는 경우도 존재
- 라벨링 노이즈 (Labeling Noise) - 데이터의 품질이 정말 중요함. : 라벨링 노이즈에 따라 교사 학습의 성능이 좌지우지 됨 - 라벨링 결과에 대한 노이즈 = 라벨링 작업에 대해 일관되지 않음의 정도 -> 학습에 사용할 데이터 5개를 모았는데 3개에서 노이즈 존재 (라벨링 결과가 참 값과 차이 존재)
- 데이터 크기 따른 노이즈 - Small data / Noisy labels : 모델구조/학습방법에 따라 다양한 모델이 확보되며, 일반화 성능이 많이 떨어짐 - Big data / Noisy labels : 좋은 모델을 확보할 수 있으나, 많은 데이터가 필요 - Small data / Clean labels Balanced data : 적은 데이터로 좋은 모델 확보 가능 - Small data / Clean labels Imbalanced data : 모델 구조/학습방법론에 따라 일반화 성능 저하
* 교사학습에서는 데이터가 가장 중요함 - 데이터에 영향을 미치는 요소 : 데이터의 크기, 라벨 노이즈, 밸랜스(입력의 분포)
비교사 학습 - 특정 입력에 대한 정답을 알려지 않고 학습시키는 방법 - 라벨링X, 피드백X - 입력구조의 숨어져있는 구조 찾기(간접적으로 정답을 줌)
- 정답이 없는데 어떻게 학습이 가능하지? -> 정답을 간접적으로 계산!! → 숨은 구조 찾기
- 클러스터링 : 클래스로 구분을 함 : 반복을 하다보면, 분류가 나오게 됨 : 계속 중심점을 옮기면서 분류를 함
- 차원 축소 (Dimension Reduction) 오토인코더(Auto-Encoder)
- 데이터 하나가 숫자 N개로 구성 (N차원 벡터) -> 원하는 출력은 차원(컬럼)을 줄이는 것 - 입력 두개가 정답 :정답이 있지만 라벨링된 정답이 아님!! (Self-Supervised Learning) : 그대로 복원 - n차원의 벡처가 출력값임 - 차원축소 사용 이유 (1)정보 압축 : 이미지/비디오/오디오 압축 (2)정보 시각화 : 사람이 눈으로 확인할 수 있는 것은 3차원 까지 (3)정보 특징 : 중요한 특징을 추출하여 분석에 사용
강화 학습 - 주어진 환경에서 더 높은 보상을 위해서 최적의 행동을 취하는 정책을 학습 - 알파고, GPT가 쓰긴 함. 라벨링 데이터X, 보상신호를 줌(잘하는가, 못하는 가에 대해서 -> 지연 피드백) - 강화학습의 4가지 구성요소: 에이전트 (Agent), 보상 (Reward), 행동 (Action), 환경 (Environment)
- 예시 : 자전거를 배움 : 상태(시각,청각,촉각), 리워드(자전거로 이동하는 시간), 에이전트(타는 사람), 환경(위치) 행동(핸들,브레이크,페달 조정) - 예시 : 게임 : 상태(게임화면), 리워드(게임점수), 에이전트(게이머), 환경(게임시스템), 행동(게임에서 움직이는 법)
Task 태스크 - 어떤 태스크를 수행? 인식? 생성?
- 비정형 데이터와 정보의 입출력 관계에 따라 인식 혹은 생성으로 구분됨
- 인식은 비정형 데이터 입력에 정보가 출력이고, 생성은 출력이 비정형 데이터인 경우에 해당 - 인식 기술이 어려울 까 생성 기술이 어려울까? : 생성이 조금 더 어려움
인식
생성 - 이미지 생성 - 시작 : 2014년의 GAN (Generative Adversarial Network) - 통제력 달성은 결국 입력을 텍스트로 받아서 해결 : OpenAI에서 ‘21년도에 공개한 DALL-E - ‘23년도에 StabilityAI의 Stable Diffusion이 상업적으로도 이용가능하면서 오픈소스여서 관련 산업이 급격히 성장
- 텍스트 생성 - 23년도에 OpenAI에서 내놓은 ChatGPT가 모든 것을 다 변화시킴 - 마치 AGI처럼 사람들이 느끼기 시작