이전에 지도학습과 비지도학습에 대해서 배웠다.

해당 내용은 그림으로 간단하게 나타냈으므로 다음 글을 슬쩍 훑고 와보자.

 

머신러닝, 딥러닝 개념, 지도학습 및 비지도학습 _ 비전공자의 머신러닝 딥러닝 학습기 # 1

저는 비전공자입니다. 머신러닝, 딥러닝 도대체 무엇인지 궁금했습니다. 머신러닝, 딥러닝에 관한 뉴스는 많이 봤지만 구체적으로 어떤 개념들이 있는지, 어떻게 적용 및 활용되는지에 대해 궁

koreadatascientist.tistory.com


지도학습 알고리즘은 크게 regression과 classification이 있다.


regression

오차가 가장 적은 예측선을 잘 찾아내는 것이 목표이다.

 

 

 

 

 

classification

정수개의 답을 잘 맞추는 것이 목표이다.

 

 

 


regression이건, classification이건 모든 과정은 아래와 같이 크게 3가지 순서를 따른다.
  1. Hypothesis - 가설을 세운다. ex. regression에서는 특정 선이 오차를 최소화 시키도록 예측한 선일 것이다.
  2. Cost function - 위의 가설에 대한 오차들을 계산한다
  3. Gradient descent algorithm - 오차를 최소화 하기 위해 미분한다.

regression

보통은 실수의 데이터를 가지고 학습을 시킨다.

위처럼 산점도에 대한 데이터가 있을 때 해당 산점도를 잘 나타내는 하나의 선을 찾는 것이다.

보통 구부러지지 않은 선을 찾는 것이 Linear Regression이라고 한다.

목표는 좋은 선을 찾도록 학습하는 것이다.

 

Hypothesis

그렇다면 좋은 선이 뭔데?

선의 함수가 H(x)이고 해당 식이 Wx + b 일 경우 어떤 선이 가장 좋은가?

(함수 이름인 H는 Hypothesis의 가설선을 의미)

 

그럴싸한(가설) 선을 하나 그어주고,

각 점과 가장 가까운 선 사이의 거리를 계산해보자

이 거리를 linear regression에서는 error라고 하며, 우리가 학습하는 용어로는 cost라고 한다.

 

 

 

자 그러면 다 됐나?

아직..!

H(x) (가설 선) -  y (실제 값인 점) 이라는 cost(error)를 구하면 끝인거 같지만, 사실 이 자체의 cost는 의미가 조금 구리다.

왜냐하면 음수가 될 수 있기 때문에.


그러면 절댓값을 하면 되지 않을까? 

이에 대해서는 분산에 대한 개념과 비슷하게 접근할 수 있는데, 여기서 설명하기 보다 아래의 글을 한번 참고해보면 왜 절댓값보다 제곱이 나은지에 대해서 알 수 있을 것이다. (아래 내용 안에서 "3가지에 대한 의문점"을 검색해보자)

 

(비전공자를 위한 통계학) 평균, 분산, 표준편차의 개념, 자유도는 덤으로 !

평균과 분산을 억지로 외우며 듣는 여러분들께 바칩니다 (저같은 통계수업 듣는 비전공자들 화이팅...)  평균과 분산에 대한 개념을 정말 쉽게 뿌셔보겠심당!! 우리는 이전시간에 어떠한 자료들

koreadatascientist.tistory.com


그렇기 때문에 저 값에 제곱을 구해준다.

그 후에 그것들(차이의 제곱들)을 합한 평균을 구한다.

그 결과 cost function은 W와 b의 함수가 된다.

(참고로 y = ax+ b는 a와 b의 함수이다)

여기서 Y는 실제값이고, Y-hat(모자쓴모양) 은 예측값(가설 선)이 된다. 

둘의 차이는 error이므로, cost라고 표현할 수 있다.

이러한 cost(W, b)를 가장 작게 하는 것이 linear regression의 학습이 된다. 

 

그러면 cost function을 어떻게 최소화하는데?

어떻게 찾아낼까? 

regression이든, classification이든 3가지의 순서를 따른다는 것을 기억하는가?

우리는 1.가설 선을 만들었고, 2.가설 선과 실제 값과의 차이(error, cost)를 구했고 이제 마지막으로 어디가 cost가 최소가 될지를 미분을 통해서 구해야 한다.


gradient descent algorithm

예를 들어 어두운 산 어딘가에서 길을 잃었다고 하자.

우리가 의존할 것은 내가 발을 디디는 곳이 아래로 가는 경사인지, 위로 가는 경사인지에만 전적으로 의존해야 한다.

이 경우에 우리는 계속 내려가는 경사만을 찾을 것이다.

경사만을 따라서 기울기가 0인 아래를 찾아가야 한다

이렇게 경사를 구하는 것이 순간변화율이라는 미분을 활용하는 것이고,

이 변화율이 0이 되는 지점이 cost를 최소화하는 지점이다.

 

 

(참고로 알파라는 값이 있는데 이는 보폭을 얼마나 할 것으로써, 하나의 중요한 인자가 된다)

 

여기서 잠깐!

convex function

W를 한 축으로, b를 한 축으로 해서 y축이 cost로 만드는 3차원 그래프를 그릴 때(아래 그래프에서 세타0 세타1이 W, b라고 생각하고 J(세타0, 세타1)이 cost라고 생각해보자)

W와 b가 각각 최소가 되는 방식으로 아래쪽으로 내려오면 하나는 동쪽, 하나는 남쪽으로 즉, 각자 다른 방향으로 내려오게 될 수도 있다. 각자 최소값이 다르게 형성된다는 것이다.

이것에 대한 해결방안으로 Convex Function을 적용하면 된다.

convex 함수는 어느 점에서 시작하든 간에, 도착하는 지점이 우리가 원하는 지점(cost가 가장 최소)을 보장한다.

동일한 산에서 3명의 사람 A, B, C어느 위치에 놔두든 산의 모양이 위와 같다면,

경사를 따라 내려가면 동일한 위치에 만나게 될테니까.

즉, cost function의 모양이 convex function이라는 것을 확인한 상태로 Gradient Descent(경사하강법; 미분)를 해야한다.

2차원에 표현한 Convex Function의 예시

y가 cost일 때, convex가 보장되지 않은 함수라면 오른쪽 그림 중 왼쪽 점처럼 local minimum에 수렴할 수 있다.

non-convex라면, 기준이 2가지(W, b)가 되므로, 각각에 대해 낮은 2가지 cost값이 정해지는 것이다.

 


 

저는 비전공자입니다.

머신러닝, 딥러닝 도대체 무엇인지 궁금했습니다.

 

머신러닝, 딥러닝에 관한 뉴스는 많이 봤지만 구체적으로 어떤 개념들이 있는지, 어떻게 적용 및 활용되는지에 대해 궁금했습니다. 이 궁금증을 해결하기 위하여 아래와 같이 정리합니다.

해당 파트에서는 머신러닝, 딥러닝에 관련된 기본적인 개념과 모델 몇가지에 대해서 정리해봤습니다.

 

전체 학습 목표
  • ML(machine learning), DL(deep learning) 알고리즘에 관한 기본적인 알고리즘
  • Linear regression, Logistic regression
  • Neural networks, Convolutional Neural Network, Recurrent Neural Network

 

머신러닝은 무엇인가

기존에도 프로그래머들이 있었고 프로그래밍도 있었다.

우리가 지금 활용하고 있는 스팸 필터, 무인 자동차를 만들기에는 규칙을 너무 많이 구축해야 하는 문제점이 있다.

 

예시

메일 안에 '보험'이라는 글자가 1개 있을 때, 2개 있을 때, 3개 있을 때, n개 있을 때 도대체 어느 경우가 스팸메일이고 어느 경우가 진짜 메일인걸까? 실제 내가 가입한 보험사의 메일일 때 스팸으로 차단된다면,,, 내가 알아야 될 정보를 획득하지 못할 수 있다.

이런 경우 모든 경우의 수를 다 코드 안에 입력해야 할까? 상당히 비현실적인 방법이다.

 

해결: 기계에 학습시키자

즉 machine learning은 한글로 번역할 때 '기계학습'으로써, 학습하는 프로그램을 의미한다.

 

러닝(learning)은 무엇인가?

  • supervised learning
  • unsupervised learning

 

supervised learning: label을 가지고 학습

label이라는것은 일종의 정답지이다.

supervised learning은 정답지를 제공하면서 learning을 시키는 과정이다.

한마디로 강아지 사진을 보여주면서 강아지이다. 고양이다. 를 알려주고 

어떤 동물 사진을 보여줄 때 이것이 강아지인지 고양이인지 맞춰보도록 훈련시키는 것.

supervised learning

 

그러면 나중에 아래와 같은 문제도 기계 스스로 정답을 맞춰나갈 것이다

supervised learning 2

 

이러한 supervised learning은 지도학습 이라고 하며, 말 그대로 누군가 정답(label)을 지도해준다는 의미

대표적으로 3가지의 예시을 볼 수 있다.

  • image labeling: 강아지, 고양이(이미지) 정답 알려주고 훈련
  • email spam filter: 스팸인지 아닌지 텍스트를 보고 판단(rule 생성)
  • predicting exam score: 공부시간을 알면 성적을 예측

 

여기서 잠깐, training dataset이란?

training dataset이란 supervised learning을 훈련할 때의 데이터셋이다.

위에서는 강아지 사진들이 training dataset이 될 것이다.

"강아지 - 정답, 치킨 - 정답 아니야" 를 기계에 계속 훈련시키다 보면 마치 강아지의 특징들을 훈련받아 새로운 강아지나 치킨을 보여줘도 정확히 맞춰갈 수 있는 좋은 재료가 되는 것이 training dataset이다.

 

unsupervised learning: 정답지(label)을 갖고 있지 않음

우리가 고양이나 강아지를 정답을 알려주면서 학습했던게 supervised learning이라면,

unsupervised learning은 그냥 고양이 강아지를 던져주는 것이다. 

얘가 고양이고 얘가 강아지야 를 전혀 하지 않은 상태로 기계에게 주는 것이다.

그래서 그 둘의 특징을 기계가 알아서 나눠서 분류를 시키는 것이다. 

눈의 크기라든지, 귀의 넓이라든지 입의 모양 등을 기계가 자기맘대로 나눠본다.

한마디로 정답지(label)없이 던져주고 비슷하게 묶어봐 하는 느낌이다.


지도학습으로 할 수 있는 것은 아래와 같이 3가지

예측 - 시험점수가 몇점일지 예측하는 것, 보통 범위가 정수나 실수다.

이진분류 - 성공 혹은 실패처럼 딱 두가지 경우로만 나눌 수 있을 때.

다중분류  - 강아지, 고양이, 펭귄, 기린, 노루를 찾아야 할 때 처럼 정답이 정수개의 해당하는 대상이 있는 경우.

 

다음 내용은 지도학습으로 할 수 있는 것에 대해 조금 더 자세히 나아가보도록 하자.

특히 지도학습 알고리즘에 대해서 쉽게 정리해보겠다.

+ Recent posts