정글에서 온 개발자

AI, 머신러닝, 딥러닝 기본 개념 본문

머신러닝

AI, 머신러닝, 딥러닝 기본 개념

dev-diver 2024. 8. 23. 23:53

AI, 머신러닝, 딥러닝의 포함 관계

AI (Artificial Intelligence;인공지능)

인간의 지능이 가지는 학습, 추리, 적용, 논증 등 기능을 갖춘 시스템.

  • 코드로 조건 분기를 일일히 해 줄 수 있다.
  • ex) ‘집의 크기와 가격’ 을 단순히 ‘3000*x + 1000’ 으로 놓는 것은 머신러닝을 쓰지 않은 AI 모델을 작성한 것이다.

머신 러닝

추론 능력을 가지는 모델을 ‘학습’ 이라는 과정을 통해 자동으로 만듦

  • ex) ‘집의 크기와 가격’이 a*x+b 라는 ‘선형 관계’를 따를 것이다 하고 가정하고, 데이터들을 입력시켜 a 와 b를 찾아가는 것이 ‘학습’ 이자 ‘머신 러닝
  • 이 때 최종적으로 ‘3000*x+1000’ 이 예측을 잘 하는 식이라고 결정됐다면 이 식이 학습된 ‘모델
  • 모델은 간단한 ‘선형 모델'부터 많은 변수를 받는 ‘다변량 모델’, 다변량 대 다변량의 관계를 여러층 쌓은 ‘DNN’ 등이 있다.

간단한 선형 모델

딥러닝

  • 학습을 위한 여러가지 모델 중, ‘layer’라고 하는 구조가 여러개 쌓여있는 구조가 DNN(Deep Neural Network)
  • 이 DNN을 학습 시키는 것이 딥러닝
  • 딥러닝은 ‘언어 이해’ 같은 비 선형적인 관계도 잘 처리하기 때문에, DNN을 기반으로 추가 구조들을 붙여 언어 처리를 한다.

딥러닝


기본 개념

모델

  • 데이터를 통해 학습하여 특정 작업을 수행할 수 있도록 설계된 수학적 구조.
  • 올바른 답을 내도록 ‘파라미터’라고 불리는 값이 조정되는 과정이 학습이다.
    • ex) a*x+b 에서의 a 와 b

언어 모델

  • 문장에 확률을 할당하는 모델
  • 입력된 문장(혹은 단어)에 대해 다음에 올 단어 후보들의 확률이 나온다.
  • 언어 모델이 처리하는 작업이 언어 모델링

LLM

  • 많은 양(Large)의 파라미터를 이용하는 언어 모델(Language Model).
  • 많은 양의 파라미터가 잘 돌아가려면 데이터 역시 많아야 한다.

파라미터

  1. 모델 파라미터 : 흔히 ‘파라미터’라고 하는 학습 중 조정되는 값
  2. 하이퍼 파라미터 :
    • 학습을 위해 학습 전 사전에 조정하는 값.
    • 대부분 자동이 아니라 사람이 해줘야 함.
    • ‘모델의 구조’도 하이퍼 파라미터
  3. LLM 파라미터 :
    • 정식 용어는 아님
    • 모두 학습된 LLM에서 사용자가 조정할 수 있도록 해준 값.
    • 아래 값들이 대표적
      • Temperature : 모델의 창의성 조정.
      • Top_K : 모델 후보군 중 , 어느 정도까지 후보군을 둘지 조정

openAI playground에서 볼 수 있는 화면. 오른쪽에서 LLM 파라미터를 조정해가며 값을 확인해 볼 수 있다.

https://www.promptingguide.ai/introduction/settings

다른 자주쓰는  LLM 파라미터에 대한 설명은 위 링크에서 볼 수 있다.

프롬프트 엔지니어링(Prompt Engineering)

  • 프롬프트 : 학습을 마치고, LLM 파라미터까지 조정된 LLM에 입력하는 문장
  • In Context Learning : LLM은 이미 학습되지 않은 내용도, 프롬프트에 있는 내용을 보고 추가 정보를 얻어 답변할 수 있게 되었다.
  • In Context Learning을 활용해 LLM이 잘 대답할 수 있도록 프롬프트를 작성하는 것을 ‘프롬프트 엔지니어링’ 이라고 한다.
  • 여러가지 기법들이 있다.
  • https://www.promptingguide.ai/techniques

파인튜닝(Fine Tuning)

  • 이미 학습된 모델 (Pre-trained) 모델에 필요한 부분만 추가 학습을 하여 원하는 태스크에 적합하게 모델을 바꾸는 것.
  • 위의 LLM 파라미터를 만지는 것은 파인 튜닝이 아니다.

고찰

  • 모델은 특정 태스크를 풀기 위한 거대한 함수라고 봐도 무방하다.
  • 쿼리마다 계속 바뀔 수 있는 정보는 프롬프트 엔지어링을 이용하는 것이 유리하다.
  • 태스크에서 계속 기억돼야 하는건 파인 튜닝이 유리하다. 모델링 경험과 지식이 필요하다.

참고 자료

    •