csmoon1010의 SW 블로그

자연어 처리 - 딥 러닝을 이용한 자연어 처리 입문(11) 본문

데이터&인공지능/자연어처리

자연어 처리 - 딥 러닝을 이용한 자연어 처리 입문(11)

csmoon1010 2020. 2. 16. 19:17

07. 머신러닝(Machine Learning) 개요

- AI = 머신 러닝 + 딥 러닝(머신 러닝의 한 갈래)

- 규칙을 찾아 프로그래밍 --> 스스로 규칙을 찾아감

- 활용분야 : 이미지 인식, 영상 처리, 알파고, 자연어 처리

- cf> 딥러닝 : 통계 기반보다 더 높은 성능을 보임

wikidocs.net/book/2155

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

1) 머신 러닝이란(What is Machine Learning?)

1. 머신 러닝(Machine Learning)이 아닌 접근 방법의 한계

ex> 이미지 인식

사진 : 보는 각도, 조명, 타겟의 변형에 따라서 천차만별 --> "공통의 명확한 특징"을 잡아내기 어렵

--> 기존과 같은 명확한 알고리즘이 존재하지 않음.

 

2. 머신러닝은 기존 프로그래밍의 한계에 대한 해결책이 될 수 있다.

- 접근 방법, 초점 :

(1) 학습(training) = 주어진 데이터로부터 "규칙성"을 찾는다

(2) 새로운 데이터에 대해 발견한 규칙성을 기준으로 정답을 찾는다.

2) 머신 러닝 훑어보기

1. 머신 러닝 모델의 평가

(1) 데이터의 분리 : 훈련용, (검증용), 테스트용

- 검증용 데이터의 역할 : 모델의 성능을 조정하기 위한 용도 = 과적합 판단, 하이퍼파라미터의 조정

**하이퍼파라미터(초매개변수) : 값에 따라 "모델의 성능"에 영향을 주는 매개변수. 사용자가 직접 지정

ex> 선형회귀 - 경사하강법의 학습률(learning rate), 딥러닝 - 은닉층의 수, 뉴런의 수, 드롭아웃 비율

**매개변수 : 가중치, 편향과 같은 학습을 통해 바뀌어져가는 변수. 기계가 훈련을 통해서 바꾸는 변수

(2) 하이퍼파라미터의 "튜닝" : 검증용 데이터를 사용하여 정확도 검증하여 하이퍼파라미터 조정

(3) 모델 평가 : 테스트 데이터를 통해 모델의 성능을 평가한다.

**데이터가 충분하지 않음? : k-폴드 교차 검증

 

2. 분류(Classification)와 회귀(Regression)

- 분류 문제 : 로지스틱 회귀(Logistic Regression)

     - 이진 분류(Binary Classification)

     - 다중 클래스 분류(Multi-Class Classification) 

     - 다중 레이블 분류(Multi-lable Classification) 

- 회귀 문제 : 선형 회귀(Linear Regression)

(1) 분류 _ 이진 분류 문제(Binary Classificaiton)

- 주어진 입력 --> 둘 중 하나의 답을 정하기

(2) 분류 _ 다중 클래스 분류(Multi-Class Classification)

- 주어진 입력 --> 두 개 이상 정해진 선택지 중 답을 정하기

- 범주/클래스 : 선택지

(3) 회귀 문제(Regression)

- 분류 문제처럼 비연속적인 답이 아닌 연속된 값을 결과로 가지는 문제

- ex> 시계열 데이터 --> 주가, 생산량, 지수 예측

 

3. 지도 학습(Suprevised Learning) & 비지도 학습(Unsupervised Learning)

- 지도 학습, 비지도 학습, 강화 학습으로 나뉘지만 여기선 강화학습은 다루지 않음

(1) 지도 학습

- "레이블(y, 실제값 = 정답)"과 함께 학습

- 학습 방식 : 예측값과 실제값 차이인 오차를 줄이는 방식

(2) 비지도 학습

- "레이블"이 없이 학습

- 예시 : LDA(토픽모델링), 워드투벡터(Word2Vec)

 

4. 샘플(Sample)과 특성(Feature)

- 보편적 문제 : 1개 이상의 독립변수 x --> 종속변수 y를 예측

- 보편적 연산 : 행렬 연산(독립변수, 종속변수, 가중치, 편향 등)

--> 훈련데이터를 "행렬"로 표현

독립변수 n개, 데이터 개수 m개

- 샘플(Sample) : 하나의 데이터 = 행

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

 

5. 혼동 행렬(Confusion Matrix)

- 정확도(Accuracy) : (맞춘 문제수) / (전체 문제수)

- 혼동 행렬(Confusion Matrix) : 맞춘 결과, 틀린 결과에 대한 세부적인 내용을 알려줌

실제/예측 거짓
TP FN
거짓 FP TN

**True/False : 정답을 맞췄는가

**Positive/Negative : 제시했던 정답

(1) 정밀도(Precision)

양성을 양성으로 맞춘 경우(TP) / 양성이라고 대답한 전체 케이스(TP + FP) 

(2) 재현률(Recall)

양성을 양성으로 맞춘 경우(TP) / 실제값이 양성인 케이스(TP + FN)

 

6. 과적합(Overfitting)과 과소 적합(Underfitting)

(1) 과적합(Overfitting) : 훈련 데이터를 과하게 학습한 경우(지나친 일반화)

--> 테스트 데이터, 실제 서비스 데이터에 대한 정확도는 떨어짐.

--> 훈련 데이터에 대한 오차↓BUT 테스트 데이터에 대한 오차↑

스팸 메일 분류하기(X축 : 훈련횟수)

**테스트 데이터의 오차가 증가하기 전 OR 정확도가 감소하기 전에 적당한 epoch를 가져야

**막는 방법 : 드롭 아웃(Drop out), 조기 종료(Early Stopping)

(2) 과소 적합(Underfitting) : 성능이 더 올라갈 여지가 있음에도 훈련을 덜 할 상태

--> 훈련 데이터, 테스트 데이터에 대한 정확도 모두 낮음

 

3) 선형 회귀(Linear Regression)

1. 선형 회귀(Linear Regression)

- 독립 변수 x에 의해서 종속 변수 y의 값이 변함. --> 한 개 이상의 독립변수 x와 y의 선형 관계를 모델링

(1) 단순 선형 회귀 분석(Simple Linear Regression Analysis)

- 독립 변수의 개수가 1개인 회귀 분석식

- x : 독립 변수 / W : 가중치 / b : 편향(bias)

**W와 b를 적절히 찾아내어 x와 y의 관계를 적절히 모델링 한다.

(2) 다중 선형 회귀 분석(Multiple Linear Regression Analysis)

- 독립 변수의 개수가 여러개인 회귀 분석식 --> 여러개의 요소에 의해 결정되는 경우

2. 가설(Hypothesis) 세우기

- 단순 선형 회귀 문제

- 가설 : x와 y의 관계를 유추하기 위해 세워보는 수학적 식

     H(x) = Wx + b

**직선의 기울기인 W와 y절편인 b에 따라 직선이 달라짐 --> 적절한 W와 b를 찾는게 중요!

 

3. 비용 함수(Cost function) : 평균 제곱 오차(MSE)

- 가설의 식에서 규칙을 가장 잘 표현하는 W와 b 찾기

- 목적 함수(Objective function) = 비용 함수(Cost function) = 손실 함수(Loss function) : 실제값과 예측값에 대한 오차에 대한 식

--> 함수의 값을 최소화/최대화 하는 "목적"을 가짐. 궁극적으로 "비용"과 "손실"을 최소화!!

- 평균 제곱 오차(Mean Squered Error, MSE) : 회귀문제에서 주로 사용되는 비용함수

- 오차(error) : 주어진 데이터에서 각 x에서의 실제값 y와 비용함수로 예측하고 있는 H(x)값의 차이(아래 그림의 ↕)

- 오차 크기 측정 방법

(1) 모두 더하기 : 양수 오차, 음수 오차가 모두 있으므로 이용 불가

(2) (오차 제곱)의 합

(3) 평균 제곱 오차(MSE) : (2)번의 평균(데이터 개수로 나눈다)

- 궁극적인 목표 : 평균 제곱 오차를 줄여 x와 y의 관계를 가장 잘 나타내는 직선을 그리자!!

평균제곱오차(MSE)
궁극적인 목표! 최소 MSE

4. 옵티마이저(Optimizer) : 경사하강법(Gradient Descent)

- 비용함수를 최소화하는 W, b를 찾기 위한 알고리즘

- 학습(training) : 옵티마이저를 통해 적절한 W, b를 찾아내는 과정

 

- 경사하강법(Gradient Descent) : 기본적인 옵티마이저 알고리즘

(1) W(가중치, 기울기)와 cost의 관계 : 너무 커지거나 작아질수록 cost값은 커진다.

--> 가장 최소인 그래프 상 볼록한 부분의 맨 아래 부분의 W를 찾아야!!

- 임의의 랜덤값 W

- 볼록한 부분을 향해 W값을 점차 수정(미분 : 접선의 기울기 = 0)

= 비용함수의 미분값이 0이 되는 곳을 향해 W의 값을 수정

W의 조정식

**기울기가 양수이면 감소하는 방향으로 음수이면 증가하는 방향으로 조정되어 0인 방향으로 조정이 가능하다

**α : 학습률(learning rate) = W의 값을 변경할 때 얼마나 크게 변경할지

     - 적당한 α값 : 높으면 W의 값이 발산, 낮으면 학습속도가 느림 

(2) 실제 경사하강법 : W와 b에 대해서 동시에 경사하강법을 수행하여 최적의 W, b 찾기

 

5. 케라스로 구현하는 선형 회귀

- 케라스 모델의 기본적 형식

model = keras.models.Sequential() #Sequential로 모델 만들기
model.add(keras.layers.Dense(1, input_dim =1)) #필요 사항 추가 : 출력의 차원, 입력의 차원

- 공부시간(x)와 성적(y)의 선형 회귀

경사하강법에 의하여 모델을 훈련시킴
모델 훈련 결과 & 새로운값으로 예측

4) 로지스틱 회귀(Logistic Regression) - 이진 분류

- 로지스틱 회귀 : 둘 중 하나를 결정하는 문제인 이진분류를 풀기 위한 대표적인 알고리즘

1. 이진 분류(Binary Classification)

- 선형 회귀처럼 직선 그래프로 나타내기 적합하지 않음

- 예측값을 두가지 값 중에 하나를 가지도록 하는것이 보편적 (ex> 0과 1 중 하나 : 예측값 > 0.5 --> 1)

--> 시그모이드 함수이용

 

2. 시그모이드 함수(Sigmoid function)

- 시그모이드 함수 방정식=가설식

- 시그모이드 함수 그래프 : 0일 때 0.5, x가 증가하면 1에 수렴, x가 감소하면 0에 수렴

- 가중치 W : 그래프의 경사도를 결정(W가 커질수록 경사가 커진다)

- 편향 b : 그래프가 위, 아래로 이동

3. 비용 함수(Cost function)

- 경사 하강법 이용 but 평균 제곱 오차 이용안함!

- 평균제곱오차 이용 안하는 이유 : 글로벌 미니멈이 아닌 로컬 미니멈에 도달할 가능성이 있음.

- 시그모이드 함수에서 이용할 비용 함수 구하기

: 로그 함수를 이용하여 나타냄.

**실제값이 1 : 예측값이 0이면 오차가 1 --- 오차 감소 --- 예측값이 1이면 오차가 0

**실제값이 0 : 예측값이 0이면 오차가 0 --- 오차 증가 --- 예측값이 1이면 오차가 1

- 크로스 엔트로피(Cross Entropy) : 두 경우를 하나의 식으로 표현하여 만든 비용함수

--> 최종 목적 함수 = 크로스 엔트로피 함수의 평균을 취한 함수

4. 케라스로 구현하는 로지스틱 회귀

- 로지스틱 회귀 모델 생성

- 크로스 엔트로피 그래프 생성

- 값 추정

Comments