본문 바로가기

딥러닝/딥러닝을 이용한 자연어처리 입문

[딥러닝 NLP] 06. 머신러닝(Linear, Logistic, Softmax Regression)

이번 장에서는 머신러닝의 개념, linear regression, logistic regression, softmax regression 대해 알아본다.

# 06-01 머신러닝이란?

-데이터가 주어지면 기계가 스스로 규칙성을 찾아내는 훈련(training) 또는 학습(learning)의 과정

-사람이 직접 규칙을 정의하는 것보다 모델이 스스로 규칙을 찾아내도록 구현하는것이 훨씬 성능 좋음

 

# 06-02 머신러닝 개요

1. 머신러닝 모델 평가

-훈련 데이터로 모델을 학습(이 때 가중치, 편향 등은 학습과정에서 자동으로 얻어짐)

-검증용 데이터에 대해 높은 정확도를 얻도록 하이퍼파라미터를 튜닝(사용자가 수정)

-튜닝을 마친 최종모델을 테스트 데이터에 적용

 

2. 분류와 회귀

-분류: 이진분류, 다중 클래스 분류

-회귀: 분류와 달리 연속적 값을 결과로 가짐 (ex.시계열 데이터로 주가 예측)

 

3. 지도학습과 비지도학습

-지도학습: 데이터와 레이블(정답)을 함께 학습하는 것

-비지도학습: 레이블 없이 데이터만 학습하는 것

  ex.토픽모델링

-자기지도학습(Self-Supervised Learning): 레이블 없는 데이터에 대해 모델이 스스로 레이블을 만들어 학습

  ex.Word2Vec, BERT

 

4. 샘플과 특성

-샘플:하나의 행

-특성:하나의 열(독립변수)

 

5. Confusion Matrix(혼동행렬)

 

 

 

 

 

 

 

 

 

 

 

1) 정밀도(Precision): 다 True라고 하긴 했는데 얼마나 정밀한 True인지, 모델이 예상한 True 값 중 실제 True 값

2) 재현율(Recall): 실제 True 값 중에 모델이 얼마나 True로 잘 재현했는지

3) 정확도(Accuracy): 모델의 전체 예측값 중에서 맞춘 정답의 비율

-한계: 실질적으로 중요한 데이터가 전체 데이터 중에서 너무 적은 비율을 차지할 때 정확도는 좋은 측정지표X

-대책: F1-Score 사용

 

6. 과적합과 과소적합

-과적합(Overfitting): 훈련데이터는 정확도 너무 높고 테스트데이터는 정확도 낮음

-대책: Dropout, Early Stopping 등

-과소적합(Underfitting): 훈련데이터, 테스트데이터 모두 정확도 낮음

 

* 검증데이터와 과적합

훈련데이터로 모델 학습 후, 검증데이터에 대한 오차를 구한다.

검증데이터에 대한 오차가 감소했다면 다시 학습하고 다시 검증한다.

검증데이터에 대한 오차가 증가했다면 과적합 징후이므로 학습을 종료한다.

테스트 데이터로 최종평가한다.

 

# 06-03 Linear Regression

1. Linear regression 이란?

-독립변수 x와 종속변수 y의 선형 관계를 모델링하는것. 가설 H(x)=wx+b일 때, x와 y의 관계를 유추한 수학적 식

-simple linear regression: y=wx+b

-multiple linear regression: y= w1x1 +  .... + wnxn + b

 

2. Linear Regression의 비용함수: 평균제곱오차(MSE)

-목적함수: 실제값과 예측값의 오차값 식. 이 오차값을 최소화or최대화하는 목적을 가져서 목점함수라고 함

-목적함수 중 최소화가 목적인 경우 비용함수, 손실함수라고도 함

-Linear Regression에 적합한 비용함수: 평균제곱오차(MSE), 모든 오차를 제곱해 더하여 평균을 구함

 

 

3. Linear Regression의 옵티마이저: 경사하강법(Gradient Descent)

-옵티마이저: 비용함수를 최소화하는 최적화 알고리즘

-머신러닝에서의 옵티마이저는 훈련(training) 혹은 학습(learning)

-경사하강법: 비용함수를 미분해 접선의 기울기를 구하고, 그 기울기가 0으로 향햐도록 w 값을 반복해서 변경

비용함수 식
비용을 최소화하는 w를 구하는 식

- (현재w) - {(현재 w에서의 기울기) x (학습률 a)}

-학습률 a가 너무 크면 cost가 발산, 너무 작으면 학습속도가 느림

 

# 06-04 Simple Linear Regression 실습

실습코드 -> https://wikidocs.net/111472

 

06-04 자동 미분과 선형 회귀 실습

선형 회귀를 텐서플로우와 케라스를 통해 구현해봅시다. ## 1. 자동 미분 ```python import tensorflow as tf ``` tape_gradient()는…

wikidocs.net

 

# 06-05 Logistic Regression

1. Logistic Regression의 활용: 이진분류

-직선은 음의무한대, 양의무한대에 대한 분류문제에 적합X

-출력이 0과 1 사이의 값을 가지면서 S자 곡선인 시그모이드 함수 사용

 

2. Logistic Regression의 개념 : 시그모이드 함수

시그모이드 함수 식

-w와 b값에 따라 경사가 달라짐

-입력값이 클수록 1에, 작을수록 0에 수렴

-출력값을 0.5 기준으로 1 아니면 0으로 나눔으로써 이진분류에 사용 가능

 

3. Logistic Regression의 비용함수: Cross Entropy 함수

-logistic regression에서 MSE를 쓰면 local minimum에 빠질 가능성 높음

-local minimum이란? 아래 그림 참고

local minimum, global minimum

-따라서, logistic regression에서는 목적함수로 Cross Entropy 함수 사용

Cross Entropy 함수
파란색: 실제값 1일 때, 빨간색: 실제값 0일 때

 

4. Logistic Regression의 옵티마이저: 경사하강법

 

# 06-06 Simple Logistic Regression 실습

실습코드 -> https://wikidocs.net/111476

# 06-07 Multiple Linear / Logistic Regression 실습

실습코드 -> https://wikidocs.net/35821

# 06-08 벡터와 행렬연산

1. 벡터, 행렬, 텐서

-벡터: 1차원 배열

-행렬: 2차원 배열

-텐서: 3차원 이상의 배열

 

2. 텐서

-numpy의 ndim을 출력해서 나오는 값을 축(axis)의 개수 혹은 텐서의 차원이라고 부름

1) 0차원 텐서: 스칼라

2) 1차원 텐서: 벡터(벡터의 차원: 하나의 축에 놓인 원소의 개수, 텐서의 차원: 축의 개수)

  ex) [1,2,3,4] 는 1차원 텐서이자 4차원 벡터

3) 2차원 텐서: 행렬 (2차원 배열)

4) 3차원 텐서: 다차원배열 (3차원 이상 배열), 특히 자연어처리에서 시퀀스 데이터를 표현할 때 자주 사용

5) 케라스에서 입력 줄 때 input_shape 인자 사용하는데, (batch_size, timesteps, word_dim) 중 배치크기 제외하고 지정

    ex) input_shape(6,5) 는 (?,6,5)를 의미

    -> batch_input_shape(6,2,5) 사용시 배치크기까지 지정 가능

 

3. 벡터와 행렬 기본연산

-요소별 연산(element-wise): 같은 크기의 벡터나 행렬은 같은 위치 원소끼리 연산

-벡터의 점곰(dot product) 또는 내적(inner product): 행벡터 곱하기 열벡터 = 스칼라

* 내적의 정의: 대응하는 원소들의 곱의 합

 

4. Multiple linear regression 을 행렬연산으로 이해하기

-수학적 관례로 가중치 W를 입력X 앞에 적어주는 편

H(X) = WX + B

5. W 와 B 의 shape 결정하기

-입력 X와 출력 Y의 shape을 알 때, 중간에 낀 W와 B의 shape을 알 수 있음

주어진 shape
B의 shape
W의 shape (1)
W의 shape(2)

# 06-09 Softmax Regression

1. Softmax Regression의 활용: 다중클래스 분류

-logistic regression이 이진분류에 사용됐다면, softmax regression은 다중클래스 분류에 사용

-출력레이블 각각에 대응할 확률을 총합이 1이 되도록 계산해, 가장 높은 확률의 레이블로 예측하는 방식

 

2. Softmax function의 개념

-입력 shape와 출력 shape에 맞추어 W와 B의 shape이 정해진다

-오차계산방법: "예측결과"와 "실제값을 원핫벡터로 표현한것"을 비교, 비용함수는 Cross Entropy 함수 사용

여기서 setosa는 예시 레이블 이름일뿐

 

3. Softmax에서 원핫벡터를 사용하는 이유

-다중 클래스 분류 문제에서 정수 인코딩(1,2,3,4)이 아니라 원핫인코딩(0,1,0,0)이 나은 이유?

 : 각 클래스는 순서의 의미를 갖지 않으므로 각 클래스 간 오차를 균등하게 해주려면 0, 1 만 사영하는 것이 보다 타당

 : 즉, 각 클래스의 표현 방법이 무작위성을 가짐 (단점: 단어간 유사성 구할 수 없음)

 

4. Softmax Regression의 비용함수: Cross Entropy

소프트맥스 함수의 최종 비용 함수에서 k가 2라고 가정하면 결국 로지스틱 회귀의 비용 함수와 같음

logistic regression의 cross entropy
softmax regression의 cross entropy

 

# 06-10 Softmax Regression 실습

실습 코드 링크 -> https://wikidocs.net/157265