[학습 목표]
- 머신러닝과 전통적인 프로그래밍의 차이를 이해한다
- 머신러닝의 과정을 이해한다
- 머신러닝의 성능 측정 척도를 살펴본다
1. 머신러닝과 전통적인 프로그래밍과의 차이점
- 전통적인 접근 방식: 원하는 절차를 "프로그래밍"하는 것. 즉 인간이 프로그램에게 적절한
문제 해결 알고리즘(구체적인 명령어)를 만들어서 건네주어야 한다. - 머신러닝: 많은 수의 동물 사진을 머신러닝 시스템에 제공하고, 어떤 사진이 강아지인지만 알려준다.
이런 식으로 훈련이 진행되면 머신러닝 시스템이 스스로 사진에서 강아지를 인식할 수 있다.
1-1. 강아지 구별 문제
- 강아지와 고양이, 북극여우, 늑대 중 강아지를 구별하는 규칙을 만들 때 문제 발생
- 털이 복실하고, 귀가 세모 모양인 것만으로는 넷을 구별할 수 없다.
- 규칙사항의 단점: 예외 발생 시 어떻게 해야할 지 알 수 없다.
2. 머신러닝 방법
- 학습 자료는 인간이 만들어주어야한다. (Data Labeling or Data Annotation(주석)) 데이터 확보
- AI가 스스로 학습 자료를 수집해서 스스로 학습할 수는 없음
- 이건 강아지, 이거는 강아지가 아님. 이라고 말해주는 것. data labeling
- 머신러닝 시스템이 학습하도록 프로그램을 작성해야 함 (Machin Learning Programming
- 프로그램은 인간이 작성. 앞으로 ai 엔지니어로서 해야할 일.
3. 전통적인 프로그래밍과 머신러닝을 비교
- 머신러닝 특징
- 인간이 직접 규칙을 만들어서 주지 않음
- 머신러닝 알고리즘이 스스로 규칙을 발견 해 내도록 설계
- 전통적 프로그래밍 예시: 바나나 vs 사과 판별기
- 입력 데이터 (Data): 색상, 경도, 모양 (사람이 입력)
- 입력 규칙 (Rules): 노랗고, 무르고, 길면 or 붉고, 딱딱하고, 둥글면 (알고리즘)
- 출력 해답 (Answers): 바나나 or 사과
- 머신러닝의 예시: 바나나 vs 사과 판별기 (딥러닝도 동일하다)
- 입력 데이터 (Data): 색상, 경도, 모양
- 입력 해답 (Answers): 바나나 or 사과
- 출력 규칙 (Rules): 노랗고, 무르고, 길면 or 붉고, 딱딱하고, 둥글면
- 딥러닝: 신경망
머신러닝: 여러 모델
4. 머신러닝
- 머신러닝은 입력 (x)을 받아서 출력 (y)를 구할 수 있는 f(x)를 학습한다고 생각할 수 있다. (함수 근사)
- 분류의 문제라면, 함수의 출력값은 해당 클래스로 분류될 확률이 된다.
5. 머신러닝의 종류
- 딥러닝: 무거움
머신러닝: 가벼움 - 지도 학습/비지도 학습/강화 학습의 차이
- 지도 학습 (Supervised Learning)
- 입력 데이터의 답을 가지고 있는 경우
- 주어진 예제(샘플)과 정답(레이블)을 제공받는다
- 일반적인 규칙(함수, 패턴)을 학습하는 것
- 비지도 학습 (Unsupervised Learning)
- 답지가 없는 경우
- 외부에서 정답(레이블)이 주어지지 않고 학습 알고리즘이 스스로 입력 데이터에서
어떠한 패턴을 발견하는 학습
- 강화 학습 (reinforcement Learning) (간단히 설명)
- 보상 및 처벌의 형태로 학습 데이터가 주어진다.
- 동적인 환경에서 프로그램의 행동에 대한 피드백만 제공됨.
- 알파고 느낌
- 지도 학습 (Supervised Learning)
- 지도학습
- 회귀: 입력 데이터를 원하면 결과값을 줌 (어떠한 값이 나옴)
- 분류: 분류도 회귀처럼 다룰 수 있음 (분류를 함)
- 회귀(regression)
주어진 입력-출력(답) 쌍을 학습한 후에 새로운 입력값이 들어왔을 때, 합리적인 출력값을 예측하는 것.- 입력(x)값과 출력(답)(y)이 주어질 때, 입력에서 출력으로의 매핑 함수를 학습하는 것이라 할 수 있다.
- f(x)의 값이 y가 될 수 있도록 (최대한 가깝도록) 학습하는 것 (나중에는 전략적으로)
- 회귀에서는 입력과 출력이 모두 실수이다.
- 분류
앞에 나왔던 식 y = f(x)에서 출력 y가 이산적(discrete)인 경우에 이것을 분류 문제(또는 인식 문제)라고 부른다.- 분류에서는 입력을 2개 이상의 클래스(분류)로 나누는 것
- 사진을 보고 강아지, 고양이로 분류하는 것도 분류 문제이다.
- 분류 예시
- 많은 과일로 채워진 과일 바구니를 보고, 프로그램이 바나나, 오렌지와 같은 올바른 레이블을 예측
- 크기, 색상, 모양 = 입력 특징값 (feature)
- 과일 이름 = 출력값 (답지, 레이블(label))
- 비지도 학습
- 비지도 학습 (unsupervised Learning)은 "교사"없이 컴퓨터가 스스로 입력들을 분류함
- 입력 데이터는 있으나 답이 없음
- 입력 x에 일대일로 대응하는 레이블 y가 주어지지 않는 것. (supervise가 없다)
- 데이터들의 상관도를 분석하여 유사한 데이터를 모을 수는 있다.
- 데이터의 유사도를 성능이라고 했을 때,
학습이 진행되면 성능이 높아지는 방향으로 그룹이 생기는 것을 알 수 있다. - 성능을 나타낼 지표만 있으면 답이 없어도 가능하다.
즉 정답이 없기 때문에 답을 대신해 성능이 될 기준이 필요하다.
6. 머신러닝의 과정
- Machin Learning Programming은 아래의 순서로 진행되는 프로그램을 작성하는 일임
- 지도학습에 초점을 둬서 수업함
- 머신러닝의 과정
- 학습 데이터 모으기
- 학습 데이터 정제하기 (훈련데이터와 테스트 데이터로. 훈련 데이터 양> 학습 데이터 양)
- 모델 학습하기 (Train, Traning)(모델 훈련)
- 평가 (Test, Testing, Inference)
- 예측
7. 머신러닝의 예
- 모델(model): 음료수가 콜라인지 주스인지를 판별하는 시스템을 만들어달라고 요청
- 훈련(train): 훈련이라는 과정을 통해 모델이 생성
8. 데이터 수집 (1번 단계)
- 데이터만 보고도 지도학습인지 비지도 학습인지 구분할 수 있어야 한다.
9. 훈련 데이터와 테스트 데이터 (2번 단계)
- 머신러닝에는 항상 훈련 데이터 (Training Data)와 테스트 데이터 (Testing Data)가 있어야 한다.
(서로 다른 데이터야 함)-> 보편타당하게 적용된다. (정석 방법을 알아야만) - 훈련 데이터는 연습문제, 테스트 데이터느 ㄴ시험 문제
- 테스트 데이터로 성능을 평가함 (훈련 결과에 대한 최종 성능)
- 왜 이렇게?
= 훈련데이터로 세상의 모든 데이터를 대표할 수 없기 때문에
= Training과 Testing 단계로 구분하고, 서로 다른 데이터를 사용함으로써, 일반화 능력을 검증할 수 있다.
(훈련되지 않았어도 어느정도 가능하다.)
10. 모델 선택 (3-1 번 단계)
- 다음 단계는 머신러닝 모델을 선택하는 것이다.
- 많은 연구자들이 수년에 걸쳐 만든 많은 모델 (훈련 대상)이 있따
- 여기서는 간단한 선형 모델 사용.
11. 선형 모델
12. 훈련 (Training) (3-2번 단계)
- 맨 처음에는 W와 b를 임의의 값을 초기화하고 입력값으로 출력을 예측해본다.
- 이 출력값을 정확한 값과 비교하여 더 정확한 예측을 갖도록 W 및 b의 값을 조정
-> 성능이 높아지는 방향 - "더 정확한 예측"을 판별할 값이 필요함, 보통 정답과의 비교를 통해서 구함
(ex. 오답의 개수가 적거나 정답의 개수가 많거나)
13. 평가 (Testing) (4번 단계)
- 학습이 완료되면 모델을 평가하여 모델이 좋은지 나쁜지를 확인해야 한다.
- 테스트 데이터 사용
- 일반적인 훈련 데이터와 테스트 데이터의 비율은 80:20 또는 70:30이다.
- 영어로 Testing 또는 Inference의 용어를 사용
- 아까 사용하지 않았던 Test Data를 사용한다.
14. 예측 (=러닝을 하는 이유) (5번 단계)
- 훈련 & 평가를 마치고 나면 성능을 알 수 있는 함수 f(x) (ex. 코로나 자가진단 테스트기)가 구해진다.
: 보통 여기까지가 개발자가 하는 일 - 예를 들어서 색상이 600mm이고 산성도가 1.5인 음료가 무엇인지를 머신러닝 시스템에 물어볼 수 있다
- 머신러닝 시스템은 훈련된 대로 색상과 산성도를 고려하여 주어진 음료가 콜라인지 주스인지 예측할 수 있다.
15. 머신러닝 알고리즘의 성능평가