Study/머신러닝

Deep Learning 기본 개념

김 도경 2024. 12. 10. 11:57

* 필수 온라인 강의 Part19 Deep Learning CH02 기본 개념

딥러닝 발전 5단계

- 시간순

- 개발의 방법이 크게 바뀌어서, 단계로 나눈다.

- 5단계를 크게 세 단계로 나눠서 SW1.0, SW2.0, SW3.0이라고도 부름

 

  • 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처럼 사람들이 느끼기 시작