의료 AI(딥러닝) 공부 일기

Ch 프롤로그. 딥러닝 기초

ignuy 2024. 7. 3.

Ch 프롤로그. 딥러닝 기초

딥러닝이란?

인공지능은 21세기 세상을 이끌어가는 기술 발전 중 당연히 독보적인 위치에 존재하고 있는 기술이다. 과거에는 추상적인 개념으로 여겨질 정도로 발전이 더딘 분야였지만 최근 그 실체가 구체화되면서 기술력의 집합체를 의미하게 되었다.

특히 딥러닝은 인공지능이라는 거대한 학문의 일부이다. 그 중, 머신러닝의 여러 기법 중 하나이다.

Ch 프롤로그. 딥러닝 기초 - 딥러닝이란?Ch 프롤로그. 딥러닝 기초 - 딥러닝이란?
출처 : [All Around AI 1편] AI의 시작과 발전 과정, 미래 전망(https://news.skhynix.co.kr/post/all-around-ai-1), (https://hongong.hanbit.co.kr/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%84-%EC%86%8C%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4/ )

 

딥러닝의 구조는 사람의 신경망을 모방한 Perceptron 구조이다. input data와 label, 그리고 weight를 활용한다. 이 weight 값을 기계가 스스로 학습을 통해 찾아내도록 하는 것이 neural network를 이용한 기계 학습이 하는 일이다.

문제가 복잡해질수록 nueral network 구조도 상당히 복잡해진다. 따라서 input layer와 output layer만 존자하는 Single-Layer Perceptron에서 벗어나 그 중간에 1개 이상의 hidden layer가 블랙박스처럼 감추어진 Mutli-layer Perceptron이 등장했다.

Deep Neural Network를 이용한 machine Learning 방법이 바로 이 Hidden layer 수가 최소 2개 이상인 network를 활용하는 방식이다.

딥러닝의 원리

머신러닝의 정의는 주어진 데이터나 과거 용례를 통하여 문제에 대한 해결 성능을 최대화하는 것이다. 쉽게 말해,,,

'다른 영역의 문제는 잘 모르겠고, 주어진 데이터가 있다면 이 안에서 규칙을 찾아내고 그걸 가지고 문제를 빠르게 해결해볼게.' 라는 발상으로 시작된 영역이다.

프로그래밍으로 이를 구현한다면 if 지옥에 빠진다. 모든 상황에 맞게 규칙을 일일히 if 조건으로 코딩한다면 해당 문제를 해결하는 것'처럼' 보일 것이다. 이는 온전한 해결이 아닐 뿐 더러 실제 현실의 문제를 다루기에는 불리하다.

Ch 프롤로그. 딥러닝 기초 -  딥러닝의 원리

딥러닝으로 이러한 영역을 구현한다면 모델을 디자인하는 것으로 해결이 가능하다. 모델을 설꼐하고 구현한다면 무한정 늘어나는 if문 보다는 신뢰도 있는 결과를 얻을 수 있다.

딥러닝이 다룰 수 있는 문제?

딥러닝안에서도 세부적으로 분류가 가능하고 각 분류마다 해결할 수 있는 문제의 영역이 다르다.

  • Association Rule Mining
  • Supervised Learning(지도 학습)
    • 입력 data와 정답을 이용한 학습, 보통은 정답이 labelled 되어 있다 함.
    • 주어진 학습셋을 근거로 학습
    • 새로운 데이터가 들어오면 정답을 예측하는 동작
    • Classification(분류)
    • Regression(회귀)
  • Unsupervised Learning(비지도 학습)
    • 입력 data만을 이용한 학습(정답은 Labelled 되어 있을 수도 있고 unlabelled 되어 있을 수도 있다.)
    • 주어진 데이터의 정보를 활용하여 패턴을 추적하거나 관계를 구성하는 동작
    • 명확하게 정해진 정답이 없을 수도 있다.
    • Clustering(군집화)
    • Feature Extraction
    • Dimensionality Reduction
  • Reinforcement Learning(강화 학습)
    • 정해진 데이터에 의해 학습되어지는 것은 아니고 Trial and error을 통한 학습
    • Unsupervised Learning의 일종이지만 분야의 사이즈가 너무 커졌다.

딥러닝 학습 과정

모델 학습을 위해 크게 2가지 stage를 거친다.

  1. Training Stage : (이 과정을 세세하게 쪼갠다면 [training + tuning(validation)]이 된다.)
    1. Input data
    2. Learning System
    3. correct output
  2. Testing Stage :
    1. NEW Input data
    2. learning System
    3. Best Guess

data set

이 학습 과정에서 빼놓을 수 없는 이야기가 data set에 대한 이야기이다. 딥러닝에서 data set도 상당히 중요한 토픽이다.

일반적으로 전체 데이터를 세 개의 셋으로 나눈다.

1. Training Set, 2. Validation set, 3. Test set

Traing Set과 Validation Set을 가지고 정확도를 올리기 위해 위 Training Stage를 수없이 반복하는 과정을 거친다. 최종적으로 validation set에 대해서도 좋은 성능이 나온 모델을 test set으로 확인하게 된다. 이 때 가장 중요한 것은,,,,

In any case, DO NOT USE the test set before the training is over!

test set을 까보고 Training Stage로 돌아가 정확도를 올리는 과정을 수행하는 것은 치팅이다. 의미없는 정확도가 나온다. 절대 하지말자.

추가적으로 데이터의 양은 많으면 많을수록 좋다. 실제 연구 결과도 데이터의양이 많아지면 모델 성능이 정체하는 구간이 나오지 않을까 해서 봤는데 그런거 없더라. GPT-2에서 10billion parameter를 사용한 것과 GPT-3에서 500billion parameter를 사용한 걸 보면 느낌이 온다.

또한, 최근에는 데이터의 양 뿐만 아니라 데이터의 질을 통한 연구도 활발히 이루어지고 있다. 좋은 데이터를 가지고 있는 것도 중요하다. 기존의 Model-Centric AI에서 벗어나서 Data-Centric AI를 추구하는 움직임도 많아졌다. 따라서 데이터 클리닝 과정도 필요하다.

딥러닝의 원리

EX) 집값 모델

  • supervised Learning
    • Labelled 학습셋이 주어짐
  • 학습셋
    • x = [면적], y = 집값

Weight 때려 맞추기

  • 1차 시도
    • 세타 제로 = 3, 세타 원 = 5
  • 2차 시도
    • 세타 제로 = 6, 세타 원 = 100
  • 3차 시도
    • 세타 제로 = 60, 세타 원 = 1000
  • 4차 시도
    • 세타 제로 = 30, 세타 원 = 800
  • ...

이 과정을 대체 몇 번 해야하는가? 사람이 머리와 손으로 파라미터를 떄려 맞추는 것은 상당히 비효율적인 과정이다.

언제 계산을 멈출 수 있나요?

  • 무한한 h(x) 중 무엇이 좋은 함수인가? 즉, 최적의 weight가 무엇인가? 어떻게 찾을 수 있는가?

Idea

  • 나쁨/틀림(wrongness)를 정의
  • Wrongness를 minimize시키는 전략
  • 아무것도 모르는 상태에서 일단 아무 값이나 넣고 시작하자. 그 후, cost / loss function 을 통한 h(x)의 예측 y’ 과 주어진 학습셋 y의 차이를 최소화해보자.

경사하강법(gradient descent)

어떤 공간 임의의 위치에서 주어진 축에 대해 더 작은 위치로 내려가려면?

→ 미분으로 접근한다.

Ch 프롤로그. 딥러닝 기초 - 딥러닝의 원리 - 경사하강법(gradient descent)

미분도 그냥하면 어렵다.

  • Back Propagation + chain rule

Ch 프롤로그. 딥러닝 기초 - 딥러닝의 원리 - 경사하강법(gradient descent)
파란 화살표가 순전파, 빨간색 화살표가 역전파(출처 : https://blog.naver.com/riverrun17/221900860949)
Ch 프롤로그. 딥러닝 기초 - 딥러닝의 원리 - 경사하강법(gradient descent)
Chain rule( 출처 : https://blog.naver.com/riverrun17/221900860949)

자세한 건 나중에 설명해보자... 솔직히 아직 이해못했다.

딥러닝의 키 컴포넌트

결국 Deep learning 을 위한 네가지 키 컴포넌트는 아래와 같다.

  1. The data that the mode can learn from
  2. The model how to transform the data
  3. The loss function that quantifies the badness of the model
  4. The algorithm to adjust the parameters to minimize the loss

딥러닝 라이브러리

tensorflow, keras, pytorch 등등

딥러닝을 제대로 공부하는 법

  • 이산수학, 미분 등 수학을 공부하기
  • 반복을 통해 모델에 익숙해지기
  • 많은 모델을 작성해보기
  • 기능보다 문제 해결에 집중하기

댓글