Deep Learning을 위해 3대장에 대해 가볍게 정리합니다 :)
- AI(Artificial Intelligence)
- ML(Machine Learning)
- DL(Deep Learning)
AI ⊃ ML ⊃ DL입니다.
AI를 구현하는 기술 중 하나가 ML
ML의 방식 중 하나가 DL
한번 읽어보고 하나씩 살펴보죠.
1. Artificial Intelligence(AI)
수많은 데이터를 판단할 필요가 생김
-> 프로그램 개발하여 컴퓨터가 반복 작업 수행
판단을 위한 새 규칙이 계속 늘어남, 데이터도 점점 늘어남
-> 매번 사람이 직접 입력, 추가 개발
점점 시간/개발 비용이 많이듬
또한, 사람조차 개발하기 어려운 복잡하고 다양한 규칙이 필요해짐
이러한 필요성에 따라
학습, 문제 해결, 패턴 인식처럼
주로 인간 지능과 인지 문제를 컴퓨터가 해결하는 컴퓨터 공학 분야가 [AI]
2. Machine Learning(ML)
AI를 구현하는 방법 중에 하나!
이름 그대로, 사람을 가르치듯 컴퓨터를 가르치자.
사람도 자신만의 판단 규칙을 만들듯이
컴퓨터도 자신만의 판단 규칙을 만들수 있도록.
봐봐, 이게 고양이야!
- 사람: 털은 어떻고, 눈은 어떻고, 귀는 저렇고, 꼬리가 저렇게 되있으면 고양이구나!
- 컴퓨터: 파일의 픽셀값과 패턴 등이 x를 만족하고, y를 만족하고, ... 라면 몇 % 확률로 고양이구나!
사람도 고양이를 보고 학습하여 다른 동물이 고양이 인지 판단하는것 처럼
컴퓨터도 어떤 데이터를 분석하여 학습하고,
이를 기반으로 판단하고 예측하는것이 ML
다시 말해, ML은
- 데이터를 스스로 분석하여 결론을 도출하는 기술
- 데이터 Training(학습)을 통해 사람 수준의 간단한 지능(규칙)을 구현
- 업무에 Training 결과로 얻어진 지능을 이용
Training(학습)?
- 데이터에 사람이 생각하는 정답(label)을 매겨 계산
- 사람의 생각과 차이가 나는 오류를 줄여가는 방법으로 수정
- 점점 더 사람과 유사하게 판단하도록 이를 반복
ML 학습 방법
사람도 학습하는 방법이 다양함
ML도 이를 적용하여 3가지로 구분
A. Supervised Learning(지도 학습)
input과 output(정답 label)을 주고 학습
정답을 알고 있는 엄마가 아이에게 숫자를 가르치는것과 유사
정답을 기반으로 오류를 줄여가며 반복 학습하여 정답에 가까워짐
대표적인 Algorithm
- Classification(분류)
- 범주형 결과를 예측하기 위함
- Binary Classification(이진 분류): 두 가지 분류
ex) 강아지 vs 고양이 결과(label) 분류 - Multi-Class Classification(다중 클래스 분류): 두 가지 이상 범주 분류
ex) 스팸메일 분류 (메일 제목, 발송자 등을 샘플로)
- Regression(회귀)
- 연속되는 다음 결과를 예측하기 위함
ex) 중고차 가격 예측 (주행거리, 연식, 브랜드 등을 샘플로)
- 연속되는 다음 결과를 예측하기 위함
B. Unsupervised Learning(비지도 학습)
직접적인 정답 없이 판단하는 방법
처음 보는 장난감을 음식이 아니라고 구분하는것과 유사
정답을 몰라도 비슷한 것들과 서로 다른 것들을 구분하여 군집으로 만듬
대표적인 Algorithm
- Clustering
- 특정 기준에 따라 유사한 데이터를 세트로 묶음
ex) 고객들의 구매 패턴 별로 고객 그룹을 나눔
- 특정 기준에 따라 유사한 데이터를 세트로 묶음
- Dimension Reduction
- 고려하는 변수를 줄임
- 수많은 raw data 중, 영향이 없거나 중복되는 데이터를 걸러냄
- 빠르고 정확한 학습을 위함
C. Semi-Supervised Learning
지도 학습과 비지도 학습을 함께 사용
Clustering한 후에 묶음의 일부만 사람이 정답을 매기어 학습하는 방식
ex) 아이폰 사진에 사람을 유사한 얼굴 끼리(cluster) 분류하고,
사람이 몇개만 동일 인물인지 확인해주고 labeling 하는 방식
D. Reinforcement Learning(강화 학습)
보상 및 벌칙으로 여러 시행착오를 거쳐 스스로 학습하는 방식
아이가 스스로 일어서는 방법, 걷는 방법 등은
스스로 경험하며 자신만의 방법을 학습하는 것과 유사
스스로 시뮬레이션하고, 보상과 벌칙으로 개선하여 다시 반복 시행하므로 일반적으로 학습시간이 매우 김
강화학습 예시
- 알파고: 시뮬레이션으로 서로 바둑을 두고, 이긴쪽의 결과를 복사하여 바둑 반복
- 인간보다 더 많은 승리 경험을 학습
- 탁구가르치기: https://www.youtube.com/watch?v=SH3bADiB7uQ&ab_channel=mpikybroll
- 팬케이크 뒤집기: https://www.youtube.com/watch?v=W_gxLKSsSIE&ab_channel=PetarKormushev
유명한 그네 타기 시뮬레이션과 유사
참고로유전 알고리즘은 인공지능이 아니고 최적화 기법
하지만 인공지능에서 많이 사용하는 기법이므로 사람들이 종종 헷깔림
3. Deep Learning(DL)
ML까지 최대한 간단하게 설명해봤는데 쉽지 않죠?ㅎㅎ
DL은 간단하게 설명할수가 없습니다ㅎㅎ
DL은 다양한 ML 방식 중에 하나
먼저 DL을 이해하기 위해 ML을 다시 정리해볼까요?
ML은 세가지가 필요
- 입력 데이터(사진)
- 기대 출력(고양이 or 강아지)
- 알고리즘 성능 판별(이 사진의 정답은 고양이, 틀렸네?, 스스로 알고리즘을 교정하여 다시 시도)
결과를 피드백삼아 알고리즘을 교정하는 과정이 학습(learning)
위의 고양이/강아지 분류 예시는 실제로는 매우 복잡
우리는 눈, 귀, 색, 몸통, 꼬리 등을 보며 알아채지만
컴퓨터는 이를 숫자로 판별해야함
근데 raw data를 이용해 예측하는건 어렵습니다.
사람에게 문제가 주어집니다.
Q) "원의 둘레 좌표를 알려줄테니 원의 둘레 길이를 구해봐!"
A)
1. 좌표의 전체 갯수를 세야되나? 아니야!
2. 원의 양 끝의 두 좌표들만 찾자!
3. 원의 양 끝의 두 좌표 중 길이 차이가 제일 큰걸 찾자!
4. 이걸 지름이라 부르고 ∏(파이)를 곱하자
사람도 좌표보단 지름으로 결과를 계산하기 쉽죠?
컴퓨터 스스로 유용하도록 데이터를 변형하는게 좋습니다.
사진의 a, b, c, d 데이터를 합쳐 어떻게해서 A가 나왔는데 이걸로 고양이/강아지 분류가 좀 쉬워졌어
사진의 a, x, y, z 데이터를 어떻게하니 나온 B도 분류가 좀 비슷하게 되는데?
그 외에도 C, D, E, F, ... 등의 유용한 데이터가 나왔어!
이렇게 나온 유용한 데이터를 섞어서 다시 규칙을 만들어 봤더니 더 정확해졌어!
쉽게 예를들면 이런 식입니다ㅋㅋ
여기서 나온 A, B, C 등 알고리즘이 데이터를 처리하기에 적합한 방식으로 데이터를 변형하죠?
이 변형을 Feature Transform(특징 변환)이라고 합니다.
변환된 결과는 Representation(표현)이라고 합니다.
사람은 좌표로 지름이라는 표현을 만들어 냈지만
컴퓨터가 사진을 고양이나 강아지로 구분하기 위해 뭘 만들어냈는지는 구체적으로 평가하기가 어렵습니다ㅋㅋ
자기만 아는 표현들을 만드는거죠.
ML 전공자가 아니라면 여기까지 이해하면 거의 다왔습니다ㅎㅎ
DL은 데이터들을 표현으로 변환하고,
표현들을 다른 표현으로 또 변형하여 좋은 표현을 만듬
만들어진 표현 단계는 Layer(층)라고 하고,
DL의 Deep은 이 Layer가 많아져 깊다는 의미
Artificial Neural Network(ANN)
데이터를 좋은 표현으로 변환한다고, 굉장히 추상적으로 말했는데
DL은 이를 Artificial Neural Network(ANN, 인공신경망)이라는 모델을 사용합니다.
ANN의 Neural Network(신경망)은 신경 생물학에서 따온 용어입니다.
DL이 뇌 구조의 이해부터 영감을 얻었지만 직접적인 연관은 적습니다.
그냥 그래프로 표현하여 작용하는 방식이 뇌와 비슷한 형상, 방식이 되어서 따온 이름입니다.
ANN은 데이터로부터 표현(주황색/흰색 노드)을 학습하는 수학 모델입니다.
정리하자면 DL은 수많은 샘플 데이터를 통해 ANN을 훈련시키고,
이후에 훈련된 ANN에 데이터를 넣어 결과를 추론할수 있는거죠.
각 노드는 생물학의 Neuron(뉴런)과 유사한 형태입니다.
여러 자극을 받아 모아 핵에서 이를 처리하고, 다른 곳으로 결과를 전달하죠.
DL에서는 이 형태를 Perceptron(퍼셉트론) 혹은
Artificial Neuron(인공 뉴런) 혹은
그냥 Neuron이라고 합니다.
쉬운 이해를 위해 가장 단순한 ANN 예시
Input Layer(입력 계층), Output Layer(출력 계층)으로만 구성
이전 Layer의 각 출력 데이터와 각 weight(가중치)를 곱해 합산하여
다음 Layer에서 입력으로 전달
받은 입력으로 Activation Function(활성 함수)을 수행
- 활성 함수는 입력을 토대로 다음 계층에 신호를 얼마나 전달할지를 결정
- 활성 함수의 종류는 몇가지 다양하지만 자세한건 다음에 다루겠음
DL의 Deep은 깊은, 많은 뉴런 계층을 의미하므로
실제로는 눈에 보이는 Input Layer, Output Layer뿐 아니라
수백 개의 추가적인 Hidden Layer 존재
깊이가 충분히 깊은 ANN을 Deep Neural Network(DNN)라 함
- 층 개수를 셀 때는 Input Layer는 세지 않음
- 일반적으로 Hidden Layer + Output Layer >= 2이면 DNN
ANN을 훈련할 때 초기 초점은 무작위로 설정
샘플 데이터가 서서히 추가됨
학습 규칙은 입력 데이터 및 예상 결과에 따라 각 가중치를 조정하는데 사용
결과는 학습 데이터에 큰 영향을 받음
변동이나 오차가 다양한 데이터를 학습해야 정확한 결과를 얻음
매우 유사한 데이터만 학습할 경우,
ANN이 Overfit(과적합)하게 되어
해당 데이터에만 적절한 응답을 하고
조금 다른 데이터에는 적절한 판단을 하지 못함
여기까집니다 :)
DL은 사람이 Feature Extraction할 필요 없이
신경망이 데이터를 학습하며 필요한 표현들을 알아서 찾아 조합합니다.
즉, ML과 DL의 차이는 표현 학습(Representaion Learning)에 있습니다.
DL은 신경망의 구조와 깊이를 변화시키며 데이터를 더욱 유용하게 표현할 수 있습니다.
DL은 이미지나 비디오, 텍스트를 이용해 Computer Vision에 널리 사용되고 있습니다 :)
Learning(학습)이란게 추상적인 개념이라서 잘 안와닿을 수 있는데
input을 입력받아 output을 만드는 알고리즘을 가진 프로그램이 있고,
input에 따라 원하는 output이 나오도록
사람에 의해 혹은 스스로 결과를 피드백 받아
알고리즘/파라미터를 조정한다고 생각하면 됩니다.