1. 머신러닝의 의미와 개요 | 머신러닝은 데이터를 수집, 처리, 패턴을 학습(특징 추출)하여 모델(결정 함수)을 생성하고 예측(결정함수 적용)하는 알고리즘 프로세스 |
머신러닝의 처리 과정의 각 과정별 요약 | 1. 학습 단계: 학습데이터집합-전처리-특징추출(핵심정보)-학습(데이터분석)-결정함수(매핑함수) 2. 추론 단계: 테스트데이터-전처리-특징추출-결정함수 적용(분류,회귀,군집화)-판단결과 |
"특징추출"의 의미와 개요 | 데이터로부터 유용한 정보를 추출하고, 이를 머신러닝 모델이 사용할 수 있는 형태로 변환하는 과정. 계산.메모리비용 감소, 노이즈 감소 - 전처리(데이터 정제) => 특성선택 => 특성추출 |
데이터 분포 특성 파악 | 머신러닝의 주요 기반 요소인 데이터와 그 2차원 데이터의 분포로부터 데이터 특성을 이해하는 과정. 산점도로 두 변수 사이의 패턴, 상관관계, 경향성을 파악. |
데이터 표현 형식 | N 차원의 열 벡터 => 데이터 처리도 벡터 연산 |
데이터 집합의 분포 | 2차원 데이터 집합의 산점도도 변수 간의 상관관계를 시각화하여 특징 추출을 쉽게. - 가우시안 분포: 평균을 중심으로 좌우 대칭, 평균은 분포의 중심.표준편차는 분포의 넓이와 산포 정도 - 평균: 데이터가 모여있는 중심 지점 - 공분산: 두 변수의 선형관계. 둘 사이의 관계와 방향성(평균에서 거리). + 상관관계=변수 증가시 다른 변수도 증가, 0에 가까울수록 직선관계가 없다 - 데이터개수: 많을 수록 산점도에 더 많이 나와 분포 파악 쉬움 |
사영에 의한 특징추출 의미 | 주어진 분포 특성 반영하는 사영으로 고차원-저차원으로 축소하여 데이터 압축하고, 더 쉽게 이해. 주어진 데이터의 분포 특성을 가장 잘 나타내는 사영 방향으로. |
머신러닝 문제 파악, 모델 선택 및 학습 | 해결할 문제가 분류, 회귀, 군집화, 특징추출 중 어떤 문제인지 명확히 이해 문제에 적합한 알고리즘 선택: 로지스틱 회귀, 결정트리, SVM, 신경망 선정된 알고리즘으로 모델 학습 |
머신러닝이 다루는 주제 | 1. 데이터분석(분류, 회귀, 군집화) 2.데이터표현(특징추출) |
머신러닝 주제의 종류 | 1(4장). 분류(Classification): 데이터를 범주 또는 클래스로 분류하는 방법. 예) ~인식, 학습-> 결정경계-> 판별함수 2(5장). 회귀(Regression): 데이터에서 출력 변수의 값을 예측하는 방법. 예) ~예측(시계열), 학습 ->회귀함수 -> 예측 결과 3(6장). 군집화(Clustering): 데이터를 유사한 그룹으로 묶는 방법. 예) 데이터그룹화, 영상분할, 학습 -> 서로소 부분집합 -> 소속 클러스터 4(7장). 특징추출(Feature Extraction): 데이터의 핵심 특징을 찾아내는 방법. 예) 영상데이터 차원축소, 데이터 시각화, 학습 -> 매핑함수 -> 특징 벡터 |
주제별 알고리즘(학습-모델) | 1. 분류: 로지스틱 회귀, 의사결정트리, 랜덤 포레스트, SVM, K-NN, 베이즈분류기, 신경망, 그래디언트 부스팅, 앙상블 학습 2. 회귀: 선형 회귀, 다항 회귀, 릿지 회귀, 라쏘 회귀,엘라스틱넷 회귀, 의사결정트리 회귀, 랜덤 포레스트 회귀, SVM 회귀, 신경망 기반 회귀 3. 군집화: K-평균, 계층적 군집화, 기댓값-최대화, 밀도 기반 공간 클러스터링(DBSCAN), 스펙트럴 클러스터링 4. 특징추출: 주성분 분석(PCA), t-SNE, 선형 판별 분석(LDA), 사영, 자동 인코더, 특성 선택 기법 |
머신러닝 학습 | 선택한 모델을 학습 데이터에 적합. 모델은 주어진 데이터를 사용하여 내부의 매개변수를 조정하고 학습하여 입력과 출력 간의 관계를 이해 |
머신러닝의 유형-학습별 | 1. 지도 학습: 레이블을 통한 학습으로 입력 데이터와 출력 데이터의 관계를 모델링 2. 비지도 학습: 레이블 없이 데이터를 학습하여 숨겨진 구조를 발견 3. Semi 지도학습: 레이블링 비용 절약위해 비지도학습도 이용 4. 강화학습: 시행착오를 통해 출력값에 대한 목표를 보상을 최대화 하는 최적의 행동 학습. 딥러닝 |
머신러닝 모델링 알고리즘 | 1. 베이즈 분류기 (Naive Bayes): 베이즈 이론을 기반으로 하는 간단한 확률적 분류용. 텍스트 분류, 스팸 필터링, 간단한 분류에 많이 사용. 2. K-최근접 이웃 (K-Nearest Neighbors, KNN): 새로운 데이터를 주변 데이터와 비교하여 분류 및 회귀 수행. 데이터 간 거리나 유사도에 기반하여 분류하거나 예측하는 데 사용. 군집화, 이상치 탐지, 추천 시스템 등 3. 로지스틱 회귀 (Logistic Regression): 이진 분류 문제에 사용, 각 클래스에 속할 확률 예측. 스팸/햄 메일 분류, 질병 진단, 고객 이탈 예측 4. 선형 회귀 (Linear Regression): 연속형 출력 값을 예측. 수치 예측 문제에 적합. 주택 가격 예측, 매출 예측, 경제적 추세 분석 등 5. 군집화(Clustering Algorithms): 유사한 특성을 가진 데이터들을 그룹으로 묶는 데 사용. K-평균, DBSCAN, 계층적 군집화 등, 비지도학습으로 데이터를 클러스터링. 고객 세분화, 소셜 미디어 분석, 이미지 분할 등 6. 특징추출(Feature Extraction): 데이터의 특성을 잘 나타내는 새로운 특성을 추출하는 데 사용. 분류, 회귀, 군집화에 사용. 다차원 축소, 중요한 정보 추출 등에 활용. 이미지 처리에서의 특징 추출, 텍스트 마이닝에서의 단어 임베딩 등 7. 앙상블학습(Ensemble Learning): 여러 개의 모델을 결합하여 단일 모델보다 더 나은 성능을 달성하는 데 사용. 다양한 알고리즘의 조합이나 동일한 알고리즘의 다른 하이퍼파라미터를 결합하여 사용. 분류와 회귀에 사용. 랜덤 포레스트, 그라디언트 부스팅, 스태킹 등의 앙상블 기법들 8. 결정트리 (Decision Trees): 분류 및 회귀 문제 모두에 사용, 데이터를 기반으로 의사결정 규칙을 학습. 고객 세분화, 제품 추천, 질병 진단, 이미지 분류 등 9. 랜덤 포레스트 (Random Forest): 여러 결정 트리를 앙상블하여 분류 및 회귀 문제 다룸. 과적합을 줄이고 정확도를 높이는 데 효과적. 10. SVM (Support Vector Machine): 이진 및 다중 클래스 분류에 사용, 데이터를 고차원 공간으로 매핑 결정 경계 찾음. 데이터가 선형 또는 비선형으로 분리 가능한 경우 적합. 텍스트 분류, 이미지 분류, 질병 예측 등 11. 신경망 (Neural Networks): 복잡한 비선형 관계, 대용량 데이터, 이미지, 텍스트 등 분류, 회귀, 군집화에 사용, 은닉층과 다층 구조로 구성. 이미지 인식, 자연어 처리, 음성 인식, 게임 AI 등 12. 강화학습 알고리즘 (Reinforcement Learning Algorithms): Q-learning, Deep Q-Networks(DQN) 등. 에이전트가 환경과 상호작용하여 보상을 최대화하는 방법을 학습. |
4. 분류의 개념 | 주어진 데이터 집합에서 이미 정의된 클래스들로 입력을 구분하는 문제, 숫자 인식, 얼굴 인식등 인식문제 |
분류기의 기능 | 학습 데이터 집합의 분포 특성을 분석하여 클래스로 분류를 위한 기준인 최적의 결정경계를 찾아낸다. |
결정경계 접근 방법 | 1. 확률 기반 방법: 주어진 데이터가 어떤 클래스에 속할 조건부 확률 추정 => 베이즈 분류기 2. 데이터 기반 방법: 데이터 간의 관계로 분류 => KNN 분류기 |
베이즈 분류기의 개념 | 데이터의 확률 분포(클래스별 확률밀도함수)를 사용하여 분류하는 방법. 사전 정보와 새로운 데이터를 통해 예측하며, 경계를 설정하여 분류하는 기법 |
베이즈 분류기의 학습과 분류 과정 결정경계 | 이진 분류(2 패턴): 사전 정보(클래스별 확률밀도 함수)와 새 데이터를 결합하여 예측=>우도비(likelihood) 분류(후험확률 확률밀도함수 추정법)로 결정경계 |
베이즈정리 | 사건이 일어난 후 앞으로 일어나게 될 다른 사건의 가능성을 구하는 것. 즉, 기존 사건들의 확률(사전 확률)을 알고 있다면, 어떤 사건 이후의 각 원인들의 조건부 확률(후험확률)을 알 수 있다 |
베이즈 분류기 vs K-NN 분류기 | 1. 베이즈: 확률 기반 분류로 사전 확률을 기반으로 예측 - 각 클래스별 확률분포함수 미리 가정하고 추정- 잘못 가정되었을 때 성능 떨어짐 - 학습데이터로 평균.표준편차만 계산해서 활용- 분류 과정에서 학습데이터 불필요 - 매번 학습데이터 없이 계산된 파라미터를 활용 2. K-NN: 데이터 기반 분류로 근접 이웃 기반 분류로 가장 가까운 이웃의 정보를 활용- 복잡한 데이터도 복잡한 경계 함수로 학습 가능 - 확률분포 모델 미리 가정않고 데이터 집합 이용하여 추정 - 새 데이터 주어질 때마다 학습데이터 전체와 거리 계산해야- 항상 학습데이터 저장해야(비용 증가) - 적절한 K값을 설정해야 함 |
가우시안 베이즈 분류기에서 공분산 행렬 형태에 따라 결정규칙의 차이 | 클래스별 데이터분포가 가우시안 분포(=정규분포, 종모양)인 경우. 공분산(두 변수의 관계) 형태에 따른 분류 규칙의 변화로, 결정 경계의 유연성에 따른 분류 정확도 변화 1) 클래스 공통 단위 공분산행렬: 모든 클래스의 공분산이 동일한 단위행렬의 상수 배인 행렬: 최소거리 분류, 결정경계 직선 2) 클래스 공통 공분산행렬: 모든 클래스의 공분산이 동일한 일반적인 행렬: 마할라노비스 거리(공분산 넣어 거리 계산), 정규화된 유클리디안 거리, 결정경계 직선 3) 일반적 공분산 행렬: 각 클래스 공분산 다름. 결정경계 곡선. 일반적인 형태 |
최근접이웃 분류기 | 주변 이웃의 다수결을 통해 분류하고, 이웃 거리에 따른 가중치 적용하여 분류하는 방식. 베이즈분류기는 미리 가정된 확률모델이 주어진 데이터 분포에 적합하지 않으면 효과적이지 않다. |
최근접이웃 분류기의 수행 단계, 문제점 | 1. 주어진 데이터 x에 대해 클래스와 상관없이 모든 데이터와 거리 계산. 2. 거리가 가장 가까운 것부터 순서대로 K개 찾아 후보 집합으로 3. 후보집합의 각 데이터가 어떤 클래스인지 레이블값 확인 4. 레이블 값중 가장 빈도수 많은 클래스에 x 할당 문제점: 과다적합. 학습데이터만 지나치게 학습, 테스트시 오분류 많아 성능 떨어짐. 적절한 K값 중요 |
5. 회귀 개념 | 입력 변수와 출력 변수 매핑하는, 연속적인 값을 예측(함수f 찾는)하는 기법. 예) 신장과 몸무게 관계를 잘 나타내는 직선이나 곡선 찾기 |
회귀 시스템 | 1. 학습데이터 분석: 목표는 예측 오차 최소화하는 최적의 회귀함수 찾기. 2. 회귀함수 추출: 데이터를 가장 잘 표현하는 직선.곡선 찾기 3. 테스트 데이터 회귀함수에 입력 4. 값을 예측: 모델을 통해 입력 값을 통해 출력 값을 예측(시계열, 주가, 환율, 판매량 예측) |
선형회귀 | 입력값과 출력값의 관계가 선형(Linear)인 경우에 사용하는 회귀 방법 |
선형회귀를 통한 예측 | 1. 데이터 수집 및 전처리 2. 모델 학습: 선형 회귀 모델의 계수 학습. y = ax + b y는 출력 변수, x는 입력 변수, a와 b는 선형 함수의 계수 선형회귀 모델의 계수 a와 b는 데이터를 사용하여 학습. 학습은 최소 제곱법 사용 3. 예측: 학습된 모델을 사용하여 새로운 데이터의 값 예측 데이터 x y ------ 1 2 2 4 3 6 이 데이터 사용 선형회귀 모델을 학습하여 계수 획득 a = 2, b = 0 이 계수를 사용하여 새로운 데이터의 값 예측 x y ------ 4 8 5 10 새로운 데이터의 x가 4이면 y가 8이 되고, x가 5이면 y가 10이 될 것으로 예측 |
선형회귀의 장점과 단점 | 장점: 이해하기 쉽고 구현하기 쉽다. 데이터의 분포가 선형적이라면 높은 예측 성능을 보인다. 단점: 데이터의 분포가 선형적이지 않으면 예측 성능이 저하될 수 있다. 다항 관계를 모델링하기 어렵다. |
로지스틱 회귀 | 선형 회귀분석의 출력(종속)변수를 범주형으로 확장한 분류 방법 |
6. 군집화의 정의 | 분류는 클래스별로 데이터 분포 특성을 분석하여 결정결계를 찾아 새 데이터에 클래스 레이블 찾아주는 것. 클래스 개념없는 전체 데이터 집합이 주어진 경우, 클래스에 레이블 없이 주어진 각 데이터를 유사성에 따라 여러 개의 부분집합(군집, cluster)으로 나누는 문제. 알고리즘: K평균 군집화, 계층적군집화, 가우시안 혼합모델, 신경망(SOM) |
군집화의 필요성 | 데이터에 대한 클래스 레이블이 주어지지 않는 경우 데이터에 대한 클래스 레이블링에 비용이 많이 드는 경우 이미지 분류, 이미지 내 화소 데이터로 영상 군집화로 분할 |
K평균(means) 군집화의 개념 | 주어진 데이터 집합을 K개 그룹으로 묶는 방법. 반복으로 매개변수 최소화하여 좋은 군집으로. K값 바꿔가며 적절한 K값 비교 선택. cf. K-NN 분류기의 K는 이웃한 데이터의 개수 |
K평균 군집화의 수행 단계 | 1. 시작 초기화: K개 대표 벡터 임의로 생성 2. 데이터 그룹핑: 각 데이터에 대해 K개의 대표 벡터들과의 거리 다 계산, 가까운데로 레이블링 3. 대표 벡터 수정: 새로운 클러스터의 대표 벡터 갱신(평균 구하기) 4. 반복 여부 결정: 2~3 반복(횟수 정해서) |
계층적 군집화 알고리즘의 개념 | 군집의 개수 정하지 않고 시작. 전체 데이터를 몇 개의 배타적 그룹으로 나누고, 큰 군집이 작은 군집을 포함하는 형태로 계층으로 군집화 수행하고 구조 살펴 보는 법 |
계층적 군집화 알고리즘의 두가지 방법 | 1. 병합적 방법: 각 데이터가 하나의 군집을 이루는 최소 군집에서 시작하여, 가까운 군집끼리 단계적으로 병합하여 더 큰 군집을 만들어 가는 방법. N-1 번의 병합 과정 필요 2. 분할적 방법: 모든 데이터가 하나의 군집에 속하는 최대 군집에서 시작하여, 특정 기준에 따라 군집들을 분할해 가는 방법. 2^(N-1)-1개의 분할 방법 가능. 비실용적 |
7. 특징 추출의 의미 | 선형변환에 의한 특징 추출: 차원 축소로 분석에 불필요한 정보를 제거하고 핵심 정보만 추출. - 차원의 저주: 차원이 커지면 어느 정도 성능이 커지다가 성능이 줄어든다. 차원이 많다면 불필요 정보도 많다 - 추출 방법 1. PCA: 클래스 정보 미사용 비지도 학습 2. LDA: 클래스 정보 사용 지도 학습 |
특징 추출 방법=차원축소 기법 PCA, LDA, 거리기반 | 1. 주성분 분석법 (Principal Component Analysis, PCA) - 변동성(데이터 분산)을 최대화하는 방향으로 선형변환하여 새로운 축 생성 - 차원이 줄어도 변환 행렬 W(데이터 간 거리) 유지. - 차원축소나 데이터 시각화에 사용. 분산이 큰 데이터. 이미지 데이터(RGB 색상 정보 분산이 큼) 2. 선형판별 분석법(Linear Discriminant Analysis, LDA)- 클래스간 분리를 최대화하는 방향으로 새로운 축 생성하여 차원축소 - 클래스 가장 잘 구분하는 새로운 축, 클래스별 가능한 한 멀리 거리 유지 - 분류와 군집화에 사용. 클래스 간 분산이 큰 데이터에 유리. 고객데이터(나이, 성별, 소득 등 클래스간 분산이 큼) 3. 거리 기반 차원축소 방법- 두 데이터 쌍 간의 거리를 최대한 유지하는 방향으로 차원 축소. - 입력 데이터와 특징 데이터 간의 매핑 함수를 정의하지 않고, 현재 데이터만 처리함. 함수가 없어서 새 데이터 처리 불가. - 데이터 시각화에 사용 - 거리의 정의에 따른 방법 1) 다차원 척도법 MDS \Multi-Dimensional Scaling: 유클리디안 거리 사용하여 데이터 간의 상대적 거리 보존 2) t-SNE: 확률밀도함수 활용하여 거리 정의, 거리가 멀리 떨어진 데이터 사이의 관계를 더 잘 반영 3) Isomap: 측지거리 사용, 점선=유클리디안. 실선 isomap(그래프 경로) |
8. 앙상블 학습, 학습기 결합 필요성 | 앞의 분류기들은 복잡한 문제 풀기에 한계=> 딥러닝, SVM 등 개발 대규모 학습, 어려운 응용문제 해결. => 학습 대상 파라미터 수가 많아짐, 과다 학습으로 일반화 성능 떨어짐 과다적합 피하기 위해 여러 개의 간단한 학습기 결합으로 좋은 성능 얻는 학습 방법. 선형 분류기와 같은 간단한 학습기로 학습 수행, M개의 학습기를 결합, 더 좋은 성능을 가진 학습기 만드는 방법 |
학습 데이터 생성 방법 | 1. 필터링: 각 학습기 학습때마다 새 데이터 생성. 제대로 처리 못하는 데이터만 필터링 학습. 초기부스팅방법, 캐스캐이딩 방법(순차적 결합). 2. 리샘플링: 주어진 전체 학습 데이터에서 일부 집합 추출, 각 학습기를 학습. 배깅 방법, MadaBoost 방 3. 가중치 조정: 모든 학습기에 동일 학습데이터 사용, 각 데이터에 가중치. AdaBoost 방법 |
배깅 | bootstrap aggregating. 리샘플링으로 학습기를 선택하는 방법. 데이터를 확률적으로 리샘플링 해 서로 다른 데이터가 나오면 학습기가 다른 성능을 보인다고 차별화 |
보팅 | 학습기의 결과를 결합하는 방법. 각 학습기가 결과에 한 표씩 투표. M개의 학습기 결과를 모두 동일한 정도로 반영하여 평균한 결과를 얻는 방법. 단순평균법 |
AdaBoost | 간단한 학습기들이 상호보완적 역할하게 단계적으로 학습 수행하여 결합, 성능 증폭시키는 방법. 학습 데이터 규모가 많아져 복잡해질 때, 두 개의(이진) 클래스에 대한 분류 문제에 적합 이전 단계의 분류기의 학습결과에 가중치 부여하여 분류기간 차별성. 최종단계 가중치로 보팅 방법 적용. |
9. 결정트리와 랜덤포레스트 | 결정트리: 데이터로 주어진 문제에 대해 결정을 의사결정규칙으로 학습, 그 함수를 트리로 구성. 결정트리는 단순한 트리모델, 랜덤포레스트는 결정 트리를 결합하여 성능향상(과다적합 해결) |
지니 불순도(Gini Impurity) | 각 노드에 할당된 클래스레이블이 얼마나 다른지 그 혼합 정도를 측정. 노드의 속성인 결정요인 선택 평가 기준. 지니 불순도외에도 엔트로피(Entropy)로 최적의 분할 결정. |
지니 평가지수 | 어떤 부모 노드에서 자식 노드의 지니 불순도의 가중합. 노드의 속성 선택 평가 기준 |
노드의 구성 | 각 노드(node)는 특정 조건에 따라 데이터를 분할. 결정 트리는 이러한 노드들의 계층 구조로, 데이터를 분할하여 예측 수행. 각 노드는 특정 조건에 따라 데이터를 나누고, 이러한 구조를 통해 입력 데이터를 예측값으로 매핑. 학습과정은 루트노드에서 중요 특성.속성을 선택 시작, 그 기준으로 자식 노드 추가, 클래스 레이블 모두 동일해지면 리프노드인 최종결과로. 1. 루트 노드 (Root Node): 트리의 시작점으로, 전체 데이터셋이 위치. 가장 중요한 특성을 선택하여 데이터 분할. 2. 내부 노드 (Internal Node): 루트 노드를 제외한 중간에 있는 노드들. 각각의 노드는 특정 특성(feature)의 조건에 따라 데이터 분할. 3. 리프 노드 (Leaf Node): 더 이상 분할되지 않고 최종적으로 예측 결과를 내놓는 노드. 각 리프 노드는 하나의 클래스 또는 예측값을 가짐. 노드내의 값: 속성값, gini(지니불순도), samples(데이터개수), value(클래스별 비율), class(클래스 레이블) |
랜덤포레스트 | 결정트리와 앙상블 학습기법 결합. 결정트리 여럿 사용하여 과대적합 문제 해결. 장점: 간단한 학습기의 결합으로 복잡한 함수 표현 및 일반화 성능 향상. 높은 설명 능력, 빠른 학습 |
10. SVM과 커널법 | Support Vector Machine. 선형 판별함수를 기반으로 분류하는 선형분류기에서 일반화 오차를 줄이는 최대 마진 분류기. (2진 분류기) 일반화 오차를 최소로 하는 최적의 경계를 찾기 위해 마진을 최대로 만들어 클래스 간의 간격을 최대로. 서포트벡터: 결정경계에 가장 가까운 곳에 위치한 데이터 마진: 학습데이터들 중 결정경계에 가장 가까운 데이터(서포트벡터)에서 결정경계까지의 거리 |
SVM과 슬랙변수 | 슬랙변수: 잘못 분류된 데이터로부터 해당 클래스의 경계까지의 거리 → 선형분리가 불가능한 데이터 처리를 위해, 데이터가 해당 클래스의 결정경계를 넘어서 다른 클래스 영역에 존재할 수 있도록 허용 → 슬랙변수가 클수록 더 심한 오분류를 허용 |
커널법 | 슬랙변수는 선형초평면을 결정경계로 사용하여 비선형문제 어느 정도만 해결 적극적으로 비선형 문제를 해결하기 위해 오분류 허용하는 법. 고차원 매핑을 통해 비선형 문제를 선형화하여 해결하면서 커널 함수를 통해 계산량 증가의 문제를 해결하는 방법 커널 함수: 선형커널, 다항식커널, 시그모이드커널, 가우시안커널 |
11. 신경망 | |
생물학적 신경세포의 기능 | 수상돌기(입력) -> 세포(연산, Activate) -> 축색(출력) -> 시냅스(연결강도 가중치) → 세포체 내부에서는 기본적으로 들어온 입력의 합이 일정 수준에 달하면(연산기능) 활동전위를 발생시킴 → 두 신경세포는 시냅스를 통하여 연결되고, 연결 강도에 따라 정보의 전달 방식과 크기가 달라짐 → 신경세포들은 계층 구조와 같은 체계적인 연결 구조로 되어 있음 |
신경망의 구성요소 및 활성화 함수의 종류, 학습의 개념 | 신경망을 정의하는 세 가지 요소 → 인공 신경세포(뉴런, 노드), 연결 구조, 학습 규칙 1. 신경세포 : n개의 입력에 대하여 연결 강도에 해당하는 가중치를 곱해 합한 가중합을 계산, 이에 대해 활성화 함수를 적용하여 다음 뉴런으로 전달될 출력을 결정 - 활성화 함수: 하나의 뉴런의 특성을 결정하는 요소, 계단함수(초기, _|- (1,0)), 부호함수( _|-(1,-1)), 선형함수(/자), 시그모이드함수(S자(1,0), 미분 가능), 하이퍼탄젠트 함수(S자(1,-1), 미분가능), ReLU 함수(최근, _/자) 2. 연결구조 : 층상 구조. 입력층-[은닉층]*-출력층으로 구성 - 은닉층: 단층 신경망(은닉층 없음) vs 다층 신경망(->심층 신경망) - 정보흐름: 전방향 신경망 vs 회귀 신경망 RNN 3. 학습 : 신경망이 원하는 기능을 수행할 수 있도록 시냅스의 연결 강도(가중치)를 조정하는 것 → 오류 역전파 학습 알고리즘 |
신경망과 관련된 일반적인 개념(학습, 특성, 능력 등) | - 활용 관점에서의 신경망 특성: 입력 x를 받아 출력 y를 계산하는 함수 y=f(x) 학습: 학습으로 함수 f의 형태를 결정짓는 파라미터(연결가중치 w or θ)를 찾음 능력: 표현 능력, 학습 능력, 일반화 능력 신경망의 능력(사용 이유, 함수로서 신경망의 장점)1. 표현 능력: 어떤 형태의 함수도 표현할 수 있다 2. 학습 능력: 데이터만 주어지면 최적의 함수를 찾을 수 있다 3. 일반화 능력: 데이터 암기가 아니라 데이터에서 일반화된 규칙을 찾음=>새로운 데이터 규칙에 적용 처리 가능 |
퍼셉트론의 개념과 구조 | M-P 뉴런: 신경세포 모방 논리함수 구현(1943), 계단함수, bias 퍼셉트론: M-P 뉴런 여러개 연결하여 최초 신경망 모델 만듬(1958). 패턴 인식 수행(학습능력: 가중치 조정 규칙) 1. 뉴런: M-P 뉴런, 계단함수 2. 연결구조: 단층, 전방향, 완전연결 3. 학습규칙: 이진 입출력 지도 학습 - 한계: 비선형 결정경계 표현 불가능=> 다층퍼셉트론에서 두개의 직선으로 해결 |
다층 퍼셉트론의 개념 및 구조 | MLP. 비선형 결정경계 만들기 위해 은닉층 추가한 신경망 1. 뉴런: 출력은 입력에 대한 비선형 매핑, 은닉층: 시그모이드함수(S자(1,0), 미분 가능) & 하이퍼탄젠트 함수(S자(1,-1), 미분가능) 2. 연결구조: 다층, 전방향, 완전연결 3. 오류역전파 알고리즘, 지도학습 |
MLP 학습과 관련된 전반적인 개념 | MLP는 다층 퍼셉트론(multi-layer perceptron)의 약자로, 입력층, 은닉층, 출력층으로 구성된 인공 신경망 모델. MLP의 학습은 주어진 입력과 목표 출력 사이의 오차를 최소화하는 가중치(weight)를 찾는 과정. 오차함수(error function)는 비선형 함수이므로 기울기 강하(gradient descent) 방법을 사용. MLP의 학습은 오류 역전파(backpropagation) 알고리즘을 통해 이루어짐. 이는 출력층에서부터 역방향으로 오차의 기울기를 계산하고, 가중치를 갱신하는 방식. MLP는 간단한 패턴 분류 문제부터 숫자 인식, 자연어 처리 등 다양한 응용 분야에 사용 |
다층 퍼셉트론의 전체적인 처리 과정(초기화, 전방향, 역방향) | ① 임의의 값으로 가중치 파라미터를 초기화하고, 학습률 η과 원하는 오차함수의 목표값을 설정 ② 모든 학습 데이터에 대해, 한 번에 하나의 데이터를 추출하여 다음 단계에 따라 가중치를 수정하는 과정을 반복 [전방향 계산] 현재의 가중치 Wij, Vjk를 이용하여 출력값을 계산 [역방향 계산] 현재의 가중치 Wij, Vjk를 이용하여 오류를 계산 ③ 전체 학습 데이터에 대하여 ② 과정이 완료된 후, 학습 데이터 전체 집합 X에 대한 평균 제곱 오차 계산 ④ ③에서 계산된 오차값이 원하는 목표값보다 작으면 학습을 마치고, 그렇지 않으면 ②~③ 과정을 반복 |
다층 퍼셉트론 학습의 고려사항 | 1. 지역 극소의 문제: 기울기 감소하는 방향으로 학습 진행->지역극소에서 전역극소로 가는 방법(학습률 조정, 시뮬레이티드 어닐링, 초기치 변화하며 충분한 은닉노드 사용) 2. 수렴 속도의 문제: 기울기 완만한 플라토에서 오래 걸림. 속도 높이는 방법(모멘텀 방법, 뉴턴방법, 자연기울기 방법) 3. 학습 종료점의 문제: 원하는 오차까지 가면 종료(검증 데이터 집합을 사용하여, 과대적합 피하기 위해 조기종료) 4. 은닉 뉴런의 수: 은닉 뉴런의 수가 학습의 속도와 찾아지는 해의 성능을 좌우(입.출력 데이터에 비례하여 개수 조정하며 적절 개수 결정) |
다층 퍼셉트론의 학습 전략 | 1. 학습 모드의 설정: - 온라인 모드: 각 데이터에 대해 가중치 조정, N개의 데이터면 N번 만큼, 오차 감소속도는 빠르나 학습이 불안정 - 배치 모드: 모든 데이터 전방향 계산 후 역방향 계산으로 오차 더하여 가중치 수정, N개의 데이터 1번의 가중치 수정, 오차 감소 속도는 느리나 학습이 안정적 - 미니 배치모드: 모든 데이터를 작은 부분 집합으로 나누어 가중치 수정, N개의 데이터를 m개의 그룹으로 나누고 m번의 가중치 수정, 데이터 규모 큰 경우에 적합 2. 모델 설정: - 은닉 노드의 수: 많을 수록 표현 가능 함수 다양하고 복잡해짐, 계산 비용, 일반화 성능 고려 문제에 맞게 적절히 결정 - 초기 조건 설정: 초기 가중치 작은 범위의 실수값으로 랜덤하게 설정, 학습마다 결과 달라짐, 학습률 1보다 작은 값에서 시작 조정 - 활성화 함수: 은닉노드(시그모이드함수, 하이퍼탄젠트, ReLu 함수), 출력노드(목표 출력값이 임의 실수값인 회귀문제-선형함수, 목표 출력값이 클래스레이블인 분류문제-시그모이드, 소프트맥스(모든 출력값 더하면 1) 함수) 3. 오차함수: 목표출력값과 신경망 내는 출력값 계산 - 제곱오차함수: 회귀문제 - 교차엔트로피 오차함수: 분류문제, 출력노드의 활성화 함수로는 소프트맥스 함수 |
12. 딥러닝의 등장과 신경망 기반의 처리 과정 | - 딥러닝 → 심층 신경망 기반의 머신러닝 분야 - 심층 신경망(많은 수의 은닉층을 가진 신경망) → 효율적인 표현은 가능하지만, 학습이 느려지고 낮은 일반화 성능 등의 학습의 어려움이 존재함 - 학습의 어려움을 극복하게 만든 요인 : ① 충분히 큰 학습 데이터 집합, ② 컴퓨팅 파워향상 및 GPU 기술 활용, ③ 다양한 학습 기법들의 개발, ④ 더 정교한 모델의 등장 등 - 심층 신경망을 통해 특징추출 과정에 대한 패러다임의 변화가 발생 → 별도의 특징추출 과정을 거치지 않고 특징추출 과정과 특징에 의한 분류 과정을 한꺼번에 학습하는 방식(“종단간 학습”) |
신경망의 문제와 해결방법: 지역 극소, 느린 학습, 과다적합
= 기울기 강하 학습법의 근본적인 문제 |
1. 지역 극소로 학습실패: 오차가 충분히 작지 않은 지역극소에서 학습이 멈춤 - 대안 - Simulated annealing: 학습률을 처음에는 크게, 차차 줄여감 - 확률적 기울기 강하: 한 번에 하나의 샘플만 사용 2. 느린 학습:- 플라토 문제(오차함수의 학습곡선에서 평평한 구간 플라토를 만드는 안장점이 무수히 많이 존재) - 기울기 소멸 문제(가중치 수정폭은 기울기의 크기에 의존. 출력층으로부터의 오차신호가 입력층으로 역전파 되어 내려오면서 점점 약해져서 학습이 느려짐. 활성화 함수 시그모이드 함수의 미분값인 입력값이 무척 작아 0에 가까움(셀포화 발생). 1보다 작은 값을 계속 곱해서, 학습이 느려짐 - 해결 방법 1. 다른 활성화 함수 사용하여 기울기 작아지는 문제 해결: ReLu 함수 미분 사용, softpluse, leaky ReLu, PReLu 2. 가중치 초기화: 셀포화가 일어나지 않도록 작은 값으로 설정. 각 뉴런의 가중치가 서로 달라지도록 랜덤하게 설정 3. 모멘텀(관성) 사용: 기울기 강하학습법의 기울기 수정식. 모멘텀항. 관성률 추가. 관성추가하여 학습. NAG 추가 4. 적응적 학습률: 학습의 속도 조정. 큰 학습률은 변화량 크고 가중치 변화 급격. 작은 학습률은 변화량 작고 안정적 학습.속도 느림 - 가중치마다 서로 다른(adaptive) 학습률: RMSProp, AdaDelta, Adam(인기, RMSProp+모멘텀 방법) 5. 배치 정규화: 학습하는 동안 각 노드의 활성화 함수로 들어가는 입력이 셀 포화되지 않도록 정규화(일정하게) 함 6. 2차 미분방법: 두 번 미분하여 곡률 정보로 변경 활용, 이론적으로 좋으나 계산 시간 길어 실질적 사용 한계 3. 과대적합: 학습데이터에 포함된 노이즈까지 학습하게 되어 테스트데이터에 대한 정확도(일반화 성능)이 떨어지는 현상. 가중치가 많으면 신경망 복잡해져 표현력 뛰어나나 과대적합 쉬움- 해결 방법 1. 조기종료: 검증용 데이터 활용하여 발생전에 학습 종료 2. 정규항: 오차함수에 정규항 추가. 가중치 커지지 않게 함 3. 드롭아웃: 학습시 가중치 수정시에만 임의로 선택한 은닉노드 일부 제외. 복잡도 낮게 학습 효과, 작은 모델 앙상블 평균과 유사효과. 많이 사용 4. 데이터 증대: 데이터 적을 때 과다적합 발생. 인위적인 변형으로 추가 데이터 생성 - 데이터변형: 일반데이터(노이즈 추가), 영상데이터(크기조정, 회전, 위치이동, 자르기 등) |
CNN(합성곱 신경망) 구조 | MLP 이웃한 층의 각노드가 완전 연결 => 은닉층 많아짐 => 가중치 많아져 신경망 복잡도 높아짐 => 느린 학습, 과다적합 문제 CNN 이웃한 층의 노드를 부분적 연결. Convolutional Neural Network 1. 신경세포(뉴론): 3가지 신경세포 유형층 - 콘볼루션층: 콘볼루션 연산으로 특징맵 생성 - 서브샘플링층(풀링층): 풀링연산으로 특징맵 크기 줄여줌(다운샘플링). 데이터의 작은 위치 이동 변화를 수용할 수 있음 - 완전연결층: 기존 MLP 구조 2. 네트워크 구조: 층상구조 - 입력층: 2D 격자(grid) 구조 x 다중 채널, 2차원 입력 그대로 사용 - 콘볼루션층, 풀링층: 2D 특징맵 X 다중 필터, 부분적 연결, 가중치 공유, 복잡함 낮춰 과다적합 해결 - 완전연결층: 기존 MLP 구조 3. 학습 알고리즘: 오류역전파 알고리즘 + dropout, 배치, 모멘텀.. |
콘볼루션 연산 | 해당하는 위치의 요소에 가중치를 곱해서 모두 더하는 간단한 선형 연산 |
CNN 콘볼루션층의 연산과 표현(채널, 필터, 패딩, 보폭) | 콘볼루션층: 실제 두뇌의 연산 수행하는 시각 피질에서 영감 받음 - 주어진 2D 입력에 콘볼루션 연산 적용해 특징맵 생성, - 제로 패딩: 입력 데이터 가장자리를 0으로 채움 - 다중 채널: 2차원 격자 입력이 다중 채널 형성하는 경우 입력영상이 RGB 컬러 영상이라면 패딩 없이 특징맵 생성 - 다수 필터: 다양한 형태의 특징을 추출하려면 다수 필터 사용 다수의 특징맵 생성 - 보폭 stride: 보폭=필터를 움직인 거리, 필터를 움직이는 간격을 조정하여 특징맵 크기 변환 - 1X1 필터: 필터의 크기가 1X1인 경우, 입력과 출력 동일 크기 - 채널+필터: 다중 채널 입력에 다중 필터 적용시 데이터의 차원 축소 효과 |
CNN의 예: LeNet | 필기 숫자 인식, 입력층(32X32X1), 3개의 콘볼루션층, 2개의 풀링층, 완전연결층 |
RNN(순환 신경망) 셀 구조와 동작 | 시간에 따라 순차적으로 제공되는 정보를 다루기 위한 신경망. 순차 데이터: - 음성, 문장, 동영상, 주식시세 등 순서 중요 - 데이터 길이 가변적. - 데이터 요소 사이에 문맥적 의존성 존재- 이전 내용의 기억 필요 순환 신경망: - 입력층, 은닉층, 출력층. - 셀구조: 은닉층에 자기 노드로 들어가는 가중치있는 순환에지가 직전의 출력이 현재의 입력으로 사용 - 텍스트 처리와 음성 처리에 주 사용 - 응용 목적에 따라 입출력 요소 대응 관계 달라짐. - 1:m: 이미지 캡셔닝 - m:1: 감정분류, 온라인 필기 문자 인식 - m:n: 기계번역, 프레임 수준의 비디오 분류 |
LSTM과 GRU의 개념 | LSTM: 시간의 흐름과 무관하게 셀의 정보를 원하는 만큼 기억할 수 있도록 고안된 순환 신경망 셀. - RNN의 기울기 소멸 문제, 기울기 폭발 문제로 개발, 장기 의존성 문제(시간에 따른 입력 신호에 대한 민감도)를 Long Short Term Memory로 해결 => 게이트 통해 이전 셀 기억 => 장기의존성 문제 해결 - LSTM 셀 기억위한 게이트 1. 망각 게이트: 이전 셀의 상태를 어느 정도 잊어버릴 건가 결정, 시그모이드 함수 2. 입력 게이트: 셀이 출력할 후보의 값 범위 결정. 셀 상태 갱신 = 기억.망각할 정보 결정 + 새로운 정보 추가 3. 출력 게이트: 현재 셀 상태의 중요도 반영하여 출력 크기 결정 GRU: Gated Recurrent Unit, LSTM 셀의 복잡한 연결 구조(학습 파라미터 많음)를 단순화 - GRU 셀 게이트 1. 갱신 게이트: 입력게이트+망각게이트, 한 시점의 출력을 위해 받아 들일 새로운 내용과 이전의 출력 내용의 비율을 조정 2. 리셋 게이트: 이전의 출력을 어느 정도 받아들일지 조정하는 부분 |
객체인식을 위한 CNN 모델의 개념과 특징 | 컴퓨터 비전 작업에서 주로 사용되며, 이미지 내의 객체를 식별하고 분류하는 데 효과적. 객체인식 경진대회 ILSVRC 2012 AlexNet 오류율 16.4% 5 콘볼루션층, 3 완전연결층 2014 VGG 오류율 7.3% 다양한 층수 모델. 가장 인기. LeNet(19층) 2014 GoogLeNet 오류율 6.7% 인셉션 모듈 구조. 다른 크기 필터 사용. 22층 2015 ResNet 오류율 3.57%, 2개층 스킵 연결, 152층, 사람 수준, 층이 깊어지면 오류역전파 학습이 점점 더 어려워지나, 잔차 모듈로 층수 확장 성공. |
대표적인 딥러닝 모델과 응용문제/분야 (VGG, GAN, Seq2Seq2, U-Net, YOLO 등) | VGG (Visual Geometry Group): 이미지 인식 및 분류에 사용되는 합성곱 신경망(CNN) 구조. 간단하고 깊은 계층으로 이루어져 있어서 이미지 인식 과제에서 널리 활용됩니다. GAN (Generative Adversarial Network): 생성 모델로, 가짜 데이터를 만들어내는 모델과 그 진위를 판별하는 모델이 서로 경쟁하며 학습합니다. 이미지 생성, 스타일 변환, 안면 생성 등 다양한 분야에서 활용됩니다. Seq2Seq (Sequence-to-Sequence): 시퀀스 데이터를 입력받아 다른 시퀀스 데이터를 출력하는 모델. 자연어 번역, 챗봇, 요약 등에서 사용되며, 인코더와 디코더로 구성되어 있습니다. U-Net: 의료 이미지 분석에 주로 사용되는 CNN 아키텍처. 주로 의료 영상에서 세분화(segmentation) 과제에 활용되며, 작은 데이터셋에서도 효과적인 성능을 보입니다. YOLO (You Only Look Once): 실시간 객체 탐지에 사용되는 딥러닝 아키텍쳐. 이미지를 그리드로 나누어 한 번의 순방향 전파로 여러 객체를 식별하고 경계 상자(bounding box)를 생성합니다. 자율 주행 자동차, 보안 등에 적용됩니다. |
언어 모델의 개념, 종류와 특징 | 언어 모델(Language Model)은 단어의 시퀀스를 입력으로 받아 주어진 단어의 시퀀스가 실제로 사용되는 자연어 표현에서 관찰될 가능성을 확률값으로 출력하는 함수
1. 통계 기반 언어 모델: n-gram 모델: 이전 단어들의 조합을 이용하여 다음 단어를 예측. 단순한 짧은 문장처리 효과적. 문맥 파악은 제한적.2. 신경망 기반 언어 모델: . 순환 신경망(RNN) 모델: 장단기 메모리(LSTM) 셀이 이전 상태를 기억하면서 다음 상태를 계산. 문장 순서 정보 학습 장점. 더 긴 문장 처리, 문맥 파악 가능. 장기의존성문제(입력 시퀀스에서 먼 단어 관계 이해 문제) . Seq2Seq 모델: 입력문장을 특징 벡터로 인코딩하고 다시 다른 시퀀스로 디코딩. 기계 번역. . Attention 모델: 장기의존성문제 해결. 디코더부분에서 출력단어를 생성할 때, 인코더의 각 셀의 정보를 읽어오는 방식으로 문맥 이해(요약,감성분석,언어모델링). 학습.추론에 시간 많이 소요 . 트랜스포머(Transformer) 언어 모델: 복잡한 RNN 구조를 없애고 잘 설계된 Attention 모델로 긴 문장 문맥 이해. 이전에 등장한 단어들 간의 상호 작용을 계산. 긴 문장처리, 다양한 자연어 처리 . ELMO 모델: LSTM 기반의 Seq2Seq 구조 모델. 문맥 파악에 사용 . BERT 모델: 구글. 트랜스포머 기반 모델, 사전학습으로 방대한 양의 데이터 충분히 학습한 언어모델 구축한후 특정 문제 풀 때 미세조정. 사전학습으로 추론 성능향상. 응용분야:두 개의 문장 유사도 평가, 질의.응답 적절성 평가, 감성분류, 기사분류, 질문에 응답, 각 단어에 대응되는 출력 얻는 구조(품사 태깅 문제 등) 등 . GPT-3(1.56T 파라미터), Bard, GPT-J, PaLM: 더 많은 사전 학습 . Gemini: 트랜스포머 기반, RNN 영향 줄여 장기 의존성 문제 더 잘 해결 |
13. 강화 학습의 개념과 적용 분야 | 에이전트가 현재 상태를 입력받아 적절한 행동을 결정하면, 현재 상태가 다른 상태로 전이되고, 전이된 상태의 상대적 효과와 가치에 따라 보상이 결정. 누적된 보상이 최대가 되도록 매 순간 최적의 행동을 결정하도록 학습. 주로 주어진 조건이나 상황에서 어떤 동작을 취해야 할 지를 결정하는 문제(제어문제)를 표현하거나, 해결하는데 많이 사용. 구글 딥마인드 알파고 아타리 비디오 게임: 49종 비디오게임 자동 플레이. 동일 구조 파라미터 사용하는 DQN 모델 사용 로봇 제어, 냉방 시스템 등 최적화 문제, 전자상거래 실시간 입찰, 광고 및 상품 추천 시스템, 금융 및 주식 시장: 주식 거래, 포트폴리오 관리 등의 예측과 의사 결정. 자율 주행 자동차: 환경을 인식하고 안전하게 운전하기 위해 주행 결정 학습 자연어 처리와 음성 인식: 대화 시스템, 기계 번역 |
마르코프 결정 프로세스(Markov Decision Process, MDP) – 정의 및 개념, 각 요소의 개념과 기능 | 에이전트와 환경의 상호작용을 위해 문제를 정의할 때 주어지는 정보를 수학적으로 표현한 것. 환경 내에서 에이전트가 특정 상태(State)에서 다른 상태로 전환하면서 보상(Reward)을 최대화하기 위한 정책(Policy)을 학습=>시간적으로 순차적인 의사 결정을 모델링하는 수학적 프레임워크. 상태(State): 에이전트가 상호작용하는 상태들의 집합. 예) 로봇이 움직이는 환경에서 각 위치는 상태. |
DQN(심층Q신경망)의 개념과 특징 | 강화 학습에서 사용되는 딥러닝 모델 중 하나로, Q-러닝(Q-Learning)을 딥러닝으로 확장, 복잡하고 고차원의 상태 공간에서 효과적으로 작동할 수 있도록 고안. CNN 구조를 이용하여 원래 영상의 픽셀 데이터를 입력으로 받아 들여 미래 보상을 추정하는 행동 가치함수의 근사함수. 아타리 비디오 게임에 적용, 주로 게임 플레이 강화 학습, 화면의 픽셀 값을 입력으로 받아 게임 상태를 학습하는 데에 성공적 - Q-러닝과 딥러닝의 결합: DQN은 Q-러닝의 개념을 기반으로 하며, 상태-행동 쌍에 대한 가치 함수인 Q 함수를 근사하기 위해 딥러닝 사용. Q 신경망의 학습 불안정성 해결. 높은 차원의 상태 공간에서도 효과적으로 학습. |
베이즈분류기 | 분류/선형/지도, 확률기반 간단,텍스트분류.스팸필터링, 사전확률가정문제=> 사전분포고려 |
로지스틱회귀 | 분류/선형/지도, 이진 간단, 스팸메일.질병진단.고객이탈예측, 과적합,비선형불가문제=> 다항로지스틱 회귀 |
결정트리 | 분류,회귀/비선형/지도, 의사결정규칙, 고객세분화,제품추천,질병진단,이미지분류, 과적합.트리깊어져 성능문제=>랜덤포레스트(앙상블), 부스팅 |
랜덤포레스트 | 분류,회귀/비선형/지도, 여러결정트리 앙상블, 정확도 높음 |
KNN | 분류,회귀/비선형/지도, 데이터간거리비교간단,군집화.이상치탐지.추천시스템, 과적합,다시 전부계산.초기K값 문제=>차원축소,거리가중치 적용,K 최적화 |
SVM - 선형 | 분류/선형/지도, 이진 분류.최대마진분류기, 텍스트분류,이미지분류,질병예측, 비선형오분류문제=>슬랙변수로 오분류 허용 |
SVM - 커널 | 회귀/비선형/지도, 다중클래스,고차원매핑으로 오분류해결. 과적합.계산비용 문제=> 커널함수최적화(선형커널,다항식커널,시그모이드커널,가우시안커널) |
선형회귀 | 회귀/선형/지도, 두변수 선형관계학습, 주택가격예측.매출예측, 비선형문제 |
K means 군집화 | 군집/선형/비지도, 간단, K미리 지정문제 => DBSCAN |
계층적군집화 | 군집/비선형/비지도, 큰군집이작은군집포함(병합/분할),거리.유사도군집, 고객세분화,소셜미디어분석,이미지분할 =>거리행렬최적화,다양한거리척도사용 |
DBSCAN | 군집/비선형/비지도, 밀도군집, 하이퍼파라미터문제=> 차원축소 |
PCA 주성분분석법 | 특징추출/비선형/비지도, 차원축소(새로운 축), 분산 큰 이미지생상정보,단어임베딩, 비선형문제=> 차원축소, 앙상블 |
LDA 선형판별 분석법 | 특징추출/비선형/비지도, 클래스별 멀리, 고객데이터(나이,성별,소득등 클래스간 분산 큼) |
거리기반 차원축소 | 특징추출/비선형/비지도, 데이터간 거리 보존 방식: MDS(유클리디안거리), t-SNE(확률밀도함수, 먼거리 관계), ISOmap(측지거리) |
퍼셉트론 | 분류,회귀/비선형/지도, 간단, 이미지.텍스트분류,자연어처리, 과적합 => 은닉층 |
다중퍼셉트론 | 분류,회귀/비선형/지도, 복잡한문제해결, 이미지.텍스트분류,자연어처리, 과적합 |
CNN 합성곱 | 분류/비선형/지도, 이미지데이터처리.정확도높음, 이미지분류.이미지인식,자연어처리, 과적합 |
RNN 순환 | 분류/비선형/지도, 시계열데이터처리.장기의존성학습, 자연어처리.음성인식.기계번역, 과적합.기울기.장기의존성 문제 => LSTM |
LSTM | 분류/비선형/지도, RNN기울기.과적합해결.기억셀로 장기의존성학습, 자연어처리.음성인식.기계번역 |
GRU 게이트순환유닛 | 분류/비선형/지도, LSTM과 유사.더 단순(학습파라미터줄음), 학습 속도가 빠름 |
LLM | 분류/비선형/지도, 대규모 언어 모델, 자연어생성.자연어이해.텍스트생성,번역,요약,질문 답변 |
DQN | 제어/비선형/지도, 강화학습.시뮬레이션학습, 게임로봇 제어 |
머신러닝
1강 머신러닝 소개
1. 머신러닝 개념. 용어.
○ 인공지능: 문제 해결 위해 인간 지능 모방하여 학습/이해하는 기계
○ 머신러닝: 기계가 (다양한 변형의) 데이터에서 일반적인 규칙(경계 구분)을 스스로 찾아내는 방법
○ 딥러닝(심층학습): 심층 신경망 기반의 머신러닝
2. 머신러닝 처리 과정
○ 학습 단계
■ 학습 데이터 집합 training dataset
■ 전처리: 분석 용이하게 가공
■ 특징 추출: 핵심 정보 추출
■ 학습(데이터 분석)
■ 결정 함수
○ 추론 단계
■ 테스트 데이터(학습에 사용되지 않은 데이터)
■ 전처리
■ 특징 추출
■ 결정 함수 적용=분류,회귀,군집화
■ 판단 결과
○ 머신러닝 시스템 개발 과정
■ 문제 파악
■ (충분한) 데이터 수집 및 이해
● MNIST: 미국 7만개(트레이닝 6만, 테스트 1만)
■ 데이터 준비(전처리) 특징 추출
■ 모델 수립 및 분석
■ 모델 평가=>수정.보완
■ 배포
3. 데이터와 데이터 분포
○ 데이터 표현
■ n차원의 벡터(열,행)
■ 데이터 연산은 모두 벡터 계산으로
■ 데이터 집합=열벡터의 모음(행렬)
○ 데이터 집합의 분포 특성
■ 공간에서 점들이 분포된 모양
■ 2차원 데이터 집합의 산점도: 가우시안 분포, 평균, 공분산, 데이터 개수
○ 특징 추출(원래 데이터보다 적은 핵심 정보)
■ 비용(계산량, 메모리) 줄이기 위해
■ 불필요 정보 제거 위해
■ 사영(Projection)으로: 2차원>1차원(x, y, u 축)=> 주어진 분포 특성을 반영해 프로젝션해야
○ 성능평가
■ 학습 시스템: 데이터로 함수와 학습시스템 매개변수 찾는 것
■ 학습=앞으로 주어질 새로운 데이터에 대해 성능을 최대화하는 것
■ 목적함수 objective function: 학습시스템의 목표를 수학적 함수로(기계가 알 수 있게)
■ 오차함수 error function: 학습시스템의 추력값과 원하는 출력값의 차이가 오차. 학습의 목적은 오차 최소화
● 학습 오차: 학습데이터에 대해 계산된 오차로 성능 평가
● 테스트 오차: 학습에 사용하지 않은 데이터로 계산된 오차로 성능 평가 = 경험오차 empirical error
● 일반화 오차: 관찰되는 모든 데이터에 대한 오차 but 확률밀도 함수를 모르므로 실제 계산 불가=>테스트 오차로 평가
● 교차 검증법: 제한된 데이터 집합을 이용해 일반화 오차에 좀 더 근접한 오차값을 계산하는 방법, K분절 교차 검증법
4. 머신러닝에서의 주제
○ 데이터 분석
■ 분류 classification
● 입력 데이터 속하는 부류 자동 판단
● 예) ~인식
● 데이터가 속하는 target output도 같이 입력
● 입력(학습,테스트데이터) - 결정경계 - 출력(클래스 레이블)
● 학습결과= 결정경계와 결정함수
● 학습목표= 분류 오차 최소화(분류율 높이기)하는 최적의 결정경계 함수(판별함수=결정함수=g(x)) 찾기
■ 회귀 regression
● 입력과 출력변수 사이의 매핑 관계(함수 f) 분석
● 예) ~ 예측(시계열)
● 입력(학습.테스트데이터) - 회귀함수 - 출력(예측결과=연속적인 실수 값)
● 학습결과=회귀함수 regresssion function
● 학습목표=회귀오차(제곱오차)를 최소화하는 최적의 회귀함수(y=f(x;세타))
■ 군집화 clustering
● 데이터 비슷한 그룹으로 묶기
● 분류 클래스 정보 없음
● 예) 데이터 그룹화, 영상 분할(픽셀이 데이터)
● 입력(학습.테스트 데이터) - 서로소인 부분집합 - 출력(소속 클러스터 argmax)
● 학습결과=K개의 서로소(disjoint)인 부분집합(cluster)
● 학습목표=최적의 클러스터(서로소) 집합 찾기=클러스터 내의 분산은 최소화, 클러스터 간의 분산은 최대화
○ 데이터 표현
■ 특징추출 feature extraction
● 데이터 분석에 적용하기 좋은 핵심 특징 찾기
● 예) 영상 데이터 차원 축소, 데이터 시각화
● 입력(학습.테스트 데이터) - 변환함수 - 출력(특징 벡터 Z)
● 학습결과=변환 함수 embedding function
● 학습목표=분석 목적에 따라 다름, 예) 차원 축소=손실량 최소화
● 학습시스템 관련 개념
5. 머신러닝 유형
○ 지도 학습 = 교사학습 Supervised Learning
■ 학습시 목표 출력값 제공(교사)
○ 비지도학습 = 비교사학습 Unsupervised Learning
■ 학습시 목표 출력값 없음. 군집화에 적합
○ Semi-supervised Learning
■ 지도학습시 목표 출력값인 클래스 레이블링 비용이 많이 들어 비지도학습도 넣어 비용 감소
○ 강화학습 Reinforcement Learning
■ 출력값에 대한 목표를 '보상 reward' 형태로 제공. 딥러닝에 많이 사용
■ 목표인 교사 신호는 정확한 값은 아니고 즉시 주어지지 않음. 보상 누적 최대화
○ 학습시스템의 복잡도:과다적합 overfitting
■ 학습시스템이 학습데이터에서만 지나치게 적합한 결정경계
■ 학습 데이터 부족이나 확률적 잡음으로 생김, 일반화 성능 저하 초래
■ 조정 방법: 충분한 학습 데이터, 조기 종료(학습때마다 검증데이터 오차 확인하며), 정규항을 가진 오차함수 사용, 모델 선택 방법
■ 머신러닝 고급 주제
■ 앙상블 학습(복수 학습시스템 결합으로 성능 향상), 능동 학습(데이터 선별적 선택), 메타학습/자동 머신러닝(하이퍼파라미터 최적화), 지속/증분학습(기존 학습 내용에 새 내용 추가 학습)
2장 데이터 표현: 벡터와 행렬
3장 데이터 분포: 확률과 통계
4장 지도학습: 분류
분류 개념
○ 패턴. 입력 데이터를 이미 정의된 몇 개의 클래스(부류)로 구분
■ 목표 출력값을 사용하여 학습 진행하는 지도학습으로
○ 숫자인식, 얼굴인식
○ 학습 결과
■ 결정 경계
● 확률 기반 방법
○ 베이즈 분류기
● 데이터 기반 방법
○ k-최근접 분류기
■ 결정 함수
분류기
○ 가우시안 베이즈 분류기
■ 기존 데이터로 클래스별 확률밀도 함수
■ 베이즈 정리로부터 유도된 우도비 분류(결정 경계)를 이용한 분류
■ 새로운 데이터가 여러 클래스 중 포함될 확률 분포로 분류결과
■ 판별 함수
● BY 베이즈 정리
○ 선험 확률을 이용해 후험 확률을 계산하는 공식
■ 두 확률변수의 사전확률과 사후확률 사이의 관계 정리
○ 후험확률=사후확률
■ 데이터 x가 주어졌을 때 k번째 클래스에 속할 조건부 확률
● Posterior
○ 선험확률=사전확률
■ 데이터 수집되면 바로 구하는 함수
● Prior
○ 우도비
■ 각 클래스에서 데이터 x가 관찰될 조건부 확률(조건이 확실하지 않다)
● Likelihood
○ 후험확률 = 우도비 * 선험확률 / Model evidence(데이터 x가 나타날 확률)
■ 확률밀도 함수
● 이산확률변수
○ 셀 수 있는 값 discrete을 가짐
■ 확률질량함수
● 이산확률변수 x의 분포 함수
● 연속확률변수
○ 셀수 없는 값 coninuous
■ 확률밀도함수
● 연속확률변수 x의 분포 함수
● likelihood 없을 때
○ 확률밀도함수 추정
■ 1. 데이터 분포 형태 가정(베이즈 분류기의 단점)
■ 2. 모양을 결정할 파라미터 계산
■ 3. 확률밀도함수 식에 대입하여 추정
■ 이진클래스인 경우
● 우도비에 의한 분류
● 1. 데이터 수집
● 2. 각각 확률밀도 함수 클래스별로 구함
● 3. 결정 경계 찾기
○ 두 밀도함수가 만나는 곳=두 그래프 만나는 점
■ 우도비 만나는 점
● 4. 두 결정 영역
● 5. 새로운 데이터
○ 값에 따라 결정영역으로 결과 값
● 6. 두 클래스의 비중이 다른 경우(Prior가 다른 경우)
○ 알파 배 확률변수 커짐
■ 한쪽 그래프 알파 배 만큼 높아지고, 결정경계 좌우 이동
■ 다중클래스인 경우
● 판별함수는 각 클래스밀도함수*비중
● 결정규칙
■ 처리과정
● 분류 절차
○ 학습
■ 학습 데이터 수집
■ 클래스별 분포함수(=밀도함수) 추정
○ 테스트데이터 입력
○ 각 클래스별 판별함수 값 계산
○ 클래스 할당
■ 분포함수 가정(클래스별 확률밀도 함수)
● 가우시안 확률분포
○ 정규 분포
○ 평균, 공분산
○ 공분산 행렬에 따른 판별함수
■ 클래스 공통 단위
● 모든 클래스 공분산 동일(x,y 숫자 같다)
● 단위행렬의 상수배 행렬
● 최소거리 분류
■ 클래스 공통 공분산행렬
● 모든 클래스 공분산 동일
● 일반적 행렬
● 마할라노비스 거리
● 공분산 넣어 함께 거리 계산
● 클래스별 입력데이터 크기 많이 차이날 때
● 정규화된 유클리디안 거리
● 공분산이 대각행렬일때, 요소별로 표준편차 값으로 나누고 계산
■ 일반적 공분산 행렬
● 각 클래스 공분산 서로 다르고
● 결정경계 곡선으로
● 일반적인 형태
○ K-최근접이웃분류기 KNN(Nearest Neighber)
■ K=1인 경우
● 1. 클래스와 상관없이 모든 데이터중 가장 작은 거리값의 데이터의 클래스로 할당
● 2. 거리가 가장 가까운 데이터 Xmin으로
● 3. Xmin이 속하는 클래스 할당
● 과다적합 문제
○ 학습데이터만 지나친 학습을 해서, 테스트시 오분류로 성능 떨어짐
○ K=5인 경우(거리 가까운 5개로)등으로 실험해야
■ 적절한 K값 결정
● K=1
● 노이즈 민감, 과다적합
● k>>1
● 전체 데이터영역에서 각 클래스가 차지하는 비율(선험확률)에 의존. 투표 과정 추가
● 주어진 데이터의 분포 특성에 의존해야
● 현실적으론 K를 여러값 써보며 결정
■ Clustering 군집화
● K-Means Clustering(군집화)
○ 대표벡터 활용하여 주어진 데이터집합을 K개의 그룹으로 묶음. 대표벡터가 변하지않을때까지 반복
○ 적절한 K값 설정필요
○ 초기 대표벡터에 따라 수렴속도가 다름
● Hirarchical Clustinger(계층적 군집화)
○ 데이터간 거리가 가까운 군집을 합쳐가며 군집 개수를 줄여가는 방법
○ 데이터가 많을 수록 계산 비용 증가
■ 거리함수
● 주어진 데이터와 학습 데이터간의 거리 계산
● 2차 노름=유클리디안 거리
● 1차 노름
● p차 노름
● 내적
● 코사인거리
● 마할라노비스
● 정규화된 유클리디안거리(마할라노비스 간소화)
○ 비교
■ 가우시안 베이즈 분류기
● 각 클래스별 확률분포함수 미리 가정하고 추정
○ 잘못 가정되었을 때 성능 떨어짐
● 학습데이터로 평균.표준편차만 계산해서 활용
○ 분류 과정에서 학습데이터 불필요
● 매번 학습데이터 없이 계산된 파라미터를 활용
■ K-최근접이웃분류기
● 복잡한 데이터도 복잡한 경계 함수로 학습 가능
● 확률분포 모델 미리 가정않고 데이터 집합 이용하여 추정
● 새 데이터 주어질 때마다 학습데이터 전체와 거리 계산해야
○ 항상 학습데이터 저장해야(비용 증가)
● 적절한 K값을 설정해야 함
○ 로지스틱 회귀 분류기
■ 회귀 기법을 분류문제로
○ 결정 트리 분류기
■ 속성 정보 순차적 적용
● 판단 결과 설명 우수
○ 서포트벡터머신(SVM)
■ 결정경계 마진 최대화
● 일반화 성능 우수
○ 신경망(딥러닝 모델)
■ 복잡한 결정 경계 신경만 모델로
● 특징 추출 단계까지 한 번에 학습
5장 지도학습: 회귀
1. 회귀의 개념
○ 입력변수와 출력변수를 매핑해주는 함수f를 찾는 것
■ bmi 체지방, 나이 등 입력으로 질병 위험도를 찾는다.
■ 시간에 따른 입력으로 시계열 예측
● 주가예측, 환율예측, 판매량 예층
○ 방법론
■ 선형회귀
■ 비선형회귀
■ 로지스틱회귀
■ SVM
■ 신경망
○ 회귀시스템
■ 학습 데이터 분석
● 목표: 예측 오차를 최소화하는 최적의 회귀함수 찾기
○ 예측 오차 = (목표 출력값 - 실제 출력값)제곱
■ 최소자승법=최소제곱법
● y = f(x;θ)
○ x는 아므로 θ 찾기
■ 회귀 함수 추출
● 데이터를 가장 잘 표현하는 직선/곡선 찾기
○ 보간 곡선: 모든 점 연결하는 곡선
■ 제곱오차는 0이지만 곡선 복잡
○ 회귀 직선: 직선
■ 작은 오차 존재
● 전체 데이터 경향 보여주는 입출력 관계 표현에는 적밥
■ 테스트 데이터 회귀함수에 입력
■ 예측 결과
○ 지도학습
■ 목표 출력값을 이용하여 학습 진행 방향 결정
● 분류
○ 출력값 = 클래스 레이블
● 회귀
○ 출력값 = 연속적 실수값
2. 선형회귀의 개념
○ 선형 함수
■ Linear
■ 일차식 함수 = 직선
■ y = w1x + w0 + e
● w1 기울기
● w0 절편
● e 오차.잔차(residual)
○ 직선에서 점까지 떨어진 거리
○ 좋은 선형회귀 모델
■ 오차.잔차가 가능한 한 작아야
■ 잔차의 제곱의 합
● 유일한 직선 생성
● 성능 평가
○ 데이터
■ 회귀함수
● 새 데이터에 대한 예측
○ 평가
○ 다변량 선형회귀
■ 입력값이 여럿(행렬). n차원 벡터(n차원 평면)
● 나이와 몸무게에 따른 수축기 혈압 찾기
3. 선형회귀의 확장
○ 선형회귀의 한계
■ 주어진 데이터가 선형회귀로 표현 가능한 지 판단해야
● 선형화 과정
○ x와 y를 적절히 변형하여 매핑 관계 찾기
○ 곡선을 x, y 값을 바꿔 (로그, 제곱 등) 직선으로 만들기
○ 선형회귀 적용
■ x와 함수로 y값 찾기
● 다항회귀
○ 족잡한 곡선
● 비선형 입력 변수함수 사용
● 비선형회귀
○ 신경망 등, SVM 활용
4. 로지스틱 회귀
○ 범주형 데이터의 회귀
■ 출력(실수)을 클래스 레이블 범주형으로 확장
● 분류 문제에 적용하기 위해 회귀 확장
■ 로지스틱 회귀
○ S자 로지스틱 함수
■ 입력이 무한대일때 출력은 항상 0, 1에 매핑
■ 오즈비
● odd ratio, 승산비
○ 입력 데이터가 c1, c2에 속할 확률
■ 로짓함수
● logit function
○ 오즈비에 로그
■ 결정경계
● 두 분류 나누는 경계
■ 매개변수 측정
● 베르누이 분포를 따르는 확률함수 데이터
● 목적함수 로그우도(likelihood) 이용하여 추정
○ 최대 우도 추청법
■ 수치적 최적화 방법으로 반복적 추정
6장 비지도학습: 군집화
군집화 정의 clustering
○ 데이터 집합의 분포 특성을 분석하여 유사성에 따라 서로 교차하지 않는 복수 개의 부분집합(군집, cluster)으로 나누는 문제
○ 분류: 입력 데이터가 어떤 데이터인지 클래스 레이블(목표 출력값) 제공 지도학습
○ 군집화
■ 바람직한 출력값에 대한 정보가 없으므로 비지도학습 수행
● 학습 데이터를 서로소인 부분집합 결과로 나눈다
○ sample, 대표벡터, 확률분포(평균, 공분산) 등으로
필요성
○ 데이터에 대한 클래스 레이블이 주어지지 않는 경우
○ 데이터에 대한 클래스 레이블링에 비용이 많이 드는 경우
○ 이미지 분류, 이미지 내 화소 데이터로 영상 군집화로 분할
알고리즘
○ K-평균 군집화
■ 주어진 데이터 집합을 K개 그룹으로 묶는 방법
● cf K-NN 분류기의 K는 이웃한 데이터의 갯수
■ K-means clustering 수행단계
● 1. 시작 초기화
○ K개 대표 벡터 임의로 생성
● 2. 데이터 그룹핑
○ 각 데이터에 대해 K개의 대표 벡터들과의 거리 다 계산, 가까운데로 레이블링
● 3. 대표 벡터 수정
○ 새로운 클러스터의 대표 벡터 갱신(평균 구하기)
● 4. 반복 여부 결정
○ 2~3 반복(횟수 정해서)
■ 특성
● 반복으로 좋은 군집 찾는가?
○ 반복할 때마다 매개변수를 최소화해서 언젠가는 좋은 군집으로
● 초기 대표 벡터 설정이 미치는 군집화 성능
○ 결과는 초기값에 민감
○ 초기값은 랜덤,영역별,거리별 등
○ 현실적은 여러 초기값 줘보고 결과보며 선택
● 적절한 K값을 어떻게 선택할 것인가
○ 문제에 의존적
■ K값을 바꿔가며 결과 비교 선택
■ 계층적 군집화 알고리즘 사용
○ 계층적 군집화
■ hierachical clustering
● 군집의 개수 정하지 않고 시작
○ K means는 K 몇 개 할 것인가가 고민
● 전체 데이터를 몇 개의 배타적 그룹으로 나누고
● 큰 군집이 작은 군집을 포함하는 형태로 계층으로 군집화 수행하고 구조 살펴 보는 법
■ 방법
● 병합적 방법
○ 각 데이터가 하나의 군집을 이루는 최소 군집에서 시작하여
○ 가까운 군집끼리 단계적으로 병합하여 더 큰 군집을 만들어 가는 방법
○ N-1 번의 병합 과정 필요
● 분할적 방법
○ 모든 데이터가 하나의 군집에 속하는 최대 군집에서 시작하여
○ 특정 기준에 따라 군집들을 분할해 가는 방법
○ 2N-1 - 1개의 분할 방법 가능
■ 비실용적
■ 특성
● 군집간 거리 계산 방법
○ 최단연결법
■ 가장 가까운 데이터 쌍간의 거리
○ 최장연결법
■ 가장 멀리 떨어진 데이터 쌍간의 거리
○ 중심연결법
■ 두 군집의 평균 간의 거리
○ 평균연결법
■ 데이터 쌍 간 거리의 평균
○ Ward's 방법
■ 분산값
● 덴드로그램(군집화 그림)으로부터 적합한 군집의 수(K)를 결정하는 방법
○ 가우시안 혼합모델
■ Gaussian mixture model
○ 신경망(SOM)
■ Self Organizing Feature Map
응용: 영상 데이터의 그룹핑, 영상분할 등
7장 데이터 표현: 특징추출
1. 선형변환에 의한 특징추출
○ 분석에 불필요한 정보를 제거하고 핵심 정보만 추출
○ 차원 축소를 통한 분석 시스템의 효율 향상
■ 계산양 줄이고 메모리 감소로 성능 향상
○ 학습 데이터
■ 학습(데이터 분석)
● 변환 함수
○ 테스트 데이터
■ 특징 벡터
○ 변환 함수
■ embedding function
● 선형변환
○ 차원의 저주
■ 차원이 커지면 어느 정도 성능이 커지다가 성능이 줄어든다
■ 차원이 많다면 불필요 정보도 많다
■ 영상 데이터 200X100=20000
○ 차원 축소 관점에서 특징 추출
○ 추출 방법
■ 주성분 분석법
● PCA Principal Component Analysis
● 클래스 정보 미사용
● 비지도 학습
■ 선형판별분석법
● LDA Linear Discriminant Analysis
● 클래스 정보 사용
● 지도 학습
● 비선형변환
○ 특징 추출 접근법
■ 수작업
● 개발자가 특징에 맞춰 설계
○ 숫자 인식, 영상 분석, 문서 분석 등
■ 표현학습
● 신경망 머신러닝 모델로 표현
○ 딥러닝으로 유행
● 학습을 통해 분석이 잘되도록 변환함수의 최적화
○ 딥러닝 모델로 얼굴 인식용 특징 추출
2. 주성분분석법 PCA
○ 목적
■ 변환 전의 데이터 X가 가지고 있는 정보를 차원 축소 후에도 최대한 유지
● 정보가 줄어도 변환 행렬 W(데이터 간 거리) 유지
● 데이터 분산이 가장 큰 방향으로 선형 변환
● PCA 2차원->1차원
● 데이터의 공분산행열의 고유치와 고유벡터를 찾아, 고유치가 가장 큰 값부터 순서대로 이에 대응하는 m개의 고유벡터를 찾아 행렬 W를 구성
○ 특징
■ 클래스 레이블 정보를 활용하지 않는 비지도 학습
■ 데이터 분석에 대한 특별한 목적이 없는 경우에 유용
■ 데이터 분포가 비선형적인 경우에는 부적합
3. 선형판별 분석법 LDA
○ 목적
■ 클래스 레이블을 적극 활용
■ 클래스 간 판별이 잘되는 방향으로 차원 축소
● 각 클래스가 가능한 한 멀리 떨어지게 거리 유지
○ 특징
■ 데이터가 복잡한 비선형 구조를 가진 경우에는 부적합
■ 고유치 분석을 통해 찾아지는 고유벡터의 개수가 제한됨
■ 데이터의 수가 입력차원보다 크지 않으면 클래스 내 산점행렬의 역행렬을 구할 수 없어서 적용 불가
4. 거리 기반 차원 축소 방법
○ 목적
■ 두 데이터 쌍 간의 거리를 최대한 유지하는 방향으로 차원 축소
○ 방법
■ 다차원 척도법 MDS Multi-Dimensional Scaling
● 유클리디안 거리 사용
■ t-SNE
● 확률밀도함수 활용하여 거리 정의
● 거리가 멀리 떨어진 데이터 사이의 관계를 더 잘 반영
■ Isomap
● 측지거리 사용
● 점선=유클리디안. 실선 isomap(그래프 경로)
○ 특징
■ 입력 데이터와 특징 데이터 간의 매핑 함수를 정의하지 않음
● 현재 데이터만 처리함
● 함수가 없어서 새 데이터 처리 불가
● 데이터 시각화에 사용
8장 앙상블 학습
1. 개념
○ 과다적합을 피할 수 있는 여러 개의 간단한 학습기 결합으로 좋은 성능 얻는 학습 방법
○ 선형 분류기와 같은 간단한 학습기로 학습 수행, M개의 학습기를 결합, 더 좋은 성능을 가진 학습기 만드는 방법
○ 필요성
■ SVM, 신경망, 딥러닝 등 복잡. 대규모
● 성능좋으나
● 학습 통해 찾아야 할 파라미터가 무척 많고 찾기 어려움
● 과다학습으로 일반화 성능 떨어지기도
■ 간단한 학습기
● 구현 쉬움
● 성능 떨어짐
○ 어떤 학습기
■ 학습 알고리즘의 차별화
● 접근 방법이 다른 것 쓰는 방법, 예. 베이즈분류기와 K-NN 사용
■ 모델 선택과 관련된 파라미터 차별화
● 예. K-NN에서 여러 K값 별 학습기 사용
■ 학습 데이터 차별화
● 같은 모델 사용, 학습 데이터 집합 다른 복수 개의 학습기
● 이론적으로 많이 연구되어 사용됨
○ 결합 방법
■ 병렬적 결합
● 각 학습기 결과를 한 번에 모두 함께 고려하여 최종 결과 생성
■ 순차적 결합
● 각 학습기의 결과를 단계별로 결합
○ 학습 데이터 생성 방법
■ 필터링
● 각 학습기 학습 때마다 새 데이터 생성
● 이를 이미 학습이 완료된 학습기에 적용
● 제대로 처리하지 못하는 데이터들만 필터링하여 학습
● 초기 부스팅 방법, 캐스케이딩 방법
■ 리샘플링
● 각 학습기의 학습 때마다 학습 데이터를 새로 생성않고
● 주어진 전체 학습 데이터로부터 일부 집합을 추출하여 각 학습기를 학습
● 배깅 방법, MadaBoost 방법
■ 가중치 조정
● 모든 학습기에 대해 동일한 학습 데이터를 사용하되,
● 각 데이터에 대해 가중치를 주어 학습에 대한 영향도를 조정
● AdaBoost 방법
2. 배깅과 보팅
○ 배깅
■ 학습기를 선택하는 방법
■ bagging
● bootstrap aggregating
○ 부트스트랩 방법을 앙상블 학습에 적용한것
■ 부트스트랩
● 제한된 데이터 집합을 이용하여 시스템의 학습과 평가를 동시에 수행하기 위한 리샘플링 기법
■ 데이터를 확률적으로 리샘플링을 해서 서로 다른 데이터가 나오니까 학습기가 다른 성능을 보인다고 차별화
○ 보팅
■ 학습기의 결과를 결합하는 방법
■ Voting
● committee machine
■ M개의 학습기 결과를 모두 동일한 정도로 반영하여 평균한 결과를 얻는 방법
■ 단순평균법
3. 부스팅
○ 간단한 학습기들이 상호보완적 역할을 할 수 있게 단계적으로 학습 수행하여 결합, 성능 증폭시키는 방법
○ 순차적 학습으로 다음 학습기에 가중치로 정보 제공하여 이전 학습기의 결점 보완
○ AdaBoost
■ 학습 데이터 규모가 많아져 복잡해지므로 사용
■ 같은 데이터 집합을 반복 사용
■ 학습할 때 마다 각 데이터에 대한 가중치 조정하여 학습 변화
■ 학습 방법과 결합 방법 같이 고려
● 각 분류기의 중요도를 결합과정에서 결합계수(최적화된 결합가중치)로 사용
■ 두 개의 클래스에 대한 분류 문제에 적합한 방법
4. 결합 방법
○ 평균법
■ 학습기의 출력이 수치형일 때 적합
○ 보팅법
■ 투표법, 분류문제에 사용. 다수결 투표, 가중 보팅
○ 또 다른 학습기로 결합
■ 기본 학습기 학습 다 된후
■ 새로운 학습 데이터로 학습
■ 두 쌍의 데이터 결합
○ 캐스케이딩
■ 여러 복잡도를 가진 학습기들의 순차적인 결합
■ 계산 줄이고 성능 향상
○ 전문가 혼합
■ 복수 개의 학습기를 가중합하여 최종학습기 만드는 결합 방법
■ 주어진 입력에 따라 어떤 학습기를 중요하게 사용할지 결정
9장 결정 트리와 랜덤 포레스트
결정트리
○ 주어진 문제에 대해 결정을 내리는 함수를 트리 형태로 구성
○ 분류 문제 위해 개발
■ 회귀 문제로 확장
● CART Classification And Regression Tree
○ 뛰어난 설명력 제공
■ AI 가 왜 그런 결정을 냈는지 설명
● XAI eXplanable
○ 과다 적합 발생 가능
■ 복잡한 함수 표현 과정에서 데이터의 노이즈에 민감한 문제
■ 이를 극복위해 앙상블 학습 기법을 결합한 랜덤 포레스트
노드의 속성(결정요인) 선택 평가 기준
○ 지니 불순도
■ 각 노드에 할당된 클래스 레이블이 얼마나 다른지 그 혼합 정도를 측정
○ 지니 평가지수
■ 어떤 부모 노드에서 자식 노들의 지니 불순도의 가중합
○ 그 외의 평가 지수
■ 정보 이득
● 데이터 집합의 분할 전후의 엔트로피의 차이
○ 엔트로피
■ 데이터의 혼잡도
■ 낮을수록 데이터의 순도가 높음
● 분류문제에 많이 사용
■ 분산 감소량
● 모든 노드에 대한 분산의 가중평균
○ 분산
■ 데이터의 동질성
■ 데이터가 완전히 같으면 분산 0
■ Chi-Square
● 부모 노드와 하위 노드 간 차이의 통계적 유의성 활용
● 분류문제에 많이 사용
노드의 구성
○ 노드
■ 학습과정
● 루트 노드에서 시작하여 각 노드에 적절한 속성을 선택하고 그 속성값에 따라 기준을 정하여 가지로 나누고 자식 노드를 추가함
● → 각 자식 노드를 다시 루트 노드로 두고 이 과정을 반복함
● → 어떤 자식 노드에 할당된 데이터의 클래스 레이블이 모두 동일하면 해당 노드는 더 이상의 분할이 필요 없는 리프 노드가 됨
■ 루트노드
■ 내부노드
■ 리프노드
● 최종 결과
○ 결정트리의 노드
○ 속성과 속성값
○ 지니불순도
○ 해당 노드에 할당된 데이터 개수
○ 각 클래스의 비율
○ 해당 노드의 클래스레이블
랜덤포레스트
○ 결정트리와 앙상블 학습기법 결합
■ 결정트리 여럿 사용하여 과다적합 문제 해결
○ 장점: 간단한 학습기의 결합으로 복잡한 함수 표현 및 일반화 성능 향상
■ 높은 설명 능력, 빠른 학습
10장 SVM과 커널법
1. 선형분류기
○ 선형판별함수로 분류 수행하는 시스템
○ 복잡도가 낮으며 분류 성능 좋지 못함
○ 과다적합 발생은 피할 수 있음
과다적합 해결하러 SVM 등장
2. SVM
○ Support Vector Machine
○ 일반화 오차를 최소화하는 방향으로 학습하게 설계된 선형분류기
○ 최소 학습 오차를 만족하는 여러 선형 결정경계 존재
○ 일반화 오차를 최소로 하는 최적의 경계를 찾기 위해 마진을 최대로 만들어 클래스 간의 간격을 최대로
■ 마진: 학습데이터들 중 결정경계에 가장 가까운 데이터(서포트벡터)에서 결정경계까지의 거리
■ 서포트벡터: 결정경계에 가장 가까운 곳에 위치한 데이터
■ SV. 마진
○ 다중클래스의 경우
■ SVM은 이진분류기(패턴이 2개일 때만 분류)
■ K개의 개별적인 SVM 분류기 사용
○ 슬랙변수를 가진 SVM
■ 슬랙변수: 잘못 분류된 데이터로부터 해당 클래스의 결정경계까지의 거리
■ 선형 분리가 불가능한 데이터 처리를 위해
■ 데이터가 해당 클래스의 결정경계를 넘어서 다른 클래스 영역에 존재할 수 있도록(오분류) 허용하게 슬랙변수 사용하여, 선형 분리가 불가능한 문제에 어느 정도 대처가 가능
■ 슬랙변수가 클수록 더 심한 오분류 허용
3. 커널법
○ 비선형문제 적극적 해결
■ 적극적으로 오분류 허용하기 위해
○ 고차원 매핑을 통해 비선형 문제를 선형화하여 해결하면서 커널 함수를 통해 계산량 증가의 문제를 해결하는 방법
○ SVM에서 사용되는 커널
■ 선형커널
■ 다항식커널
■ 시그모이드커널
■ 가우시안커널
11장 신경망1
Ai
○ 1. Symbolic Ai
■ 기호주의= Classic Ai
● 하나하나 단어
■ 부울논리: 인간은 어떻게 생각하는가?
■ 논리 중심 규칙 기반 지식 표현, 추론
■ 지식 처리 과정을 알고 있어야만 적용 가능
■ -> Prolog -> IBM Deep Blue, Chess Ai
○ 2. Connectionist Ai
■ 연결주의
■ 명시적으로 처리하기 어려울 때
● 데이터만 주고 학습하여 규칙 찾는다
■ 간단한 기능 소자 연결하여 분산적 처리
■ 인간의 두뇌의 여러 신경세포와 망
■ 퍼셉트론
■ 딥러닝
(인공)신경망 정의
○ 신경회로망
■ Neural Networks
○ 생물학적 신경회로망을 모델링한 수학적 함수
○ 데이터를 이용, 학습 수행, 원하는 입출력 매핑 함수의 형태를 스스로 찾는 학습 능력
■ 머신러닝
○ 학습방식(데이터 분석 용도)에 따라 다양한 모델 존재
○ 심층신경망
■ 가장 발전된 형태의 신경망 모델들
○ 딥러닝
■ 심층신경망을 이용하여 데이터를 분석하는 머신러닝 기술
신경망
○ 신경세포
■ 100억개 이상
● 수상돌기(입력) -> 세포(연산, Activate) -> 축색(출력) -> 시냅스(연결강도 가중치)
○ 세포간 연결
■ 60조 이상
● 태어났을 때 연결 적으나 학습 통해 많아짐
○ 적응성 adaptaion
○ 학습 learning
● 계층연결-층상연결
인공신경망
○ 인간의 뇌의 정보처리 방식 모델링
○ 구성요소
■ 1. 신경세포
● 하나의 신경세포가 수행하는 기능을 수학적 함수로 정의
● 입력의 가중합
● 입력이 일정한 수준이 되야 출력
● 뉴런의 핵심
○ 하나의 뉴런의 특성을 결정하는 역할
○ 활성화 함수
■ 계단함수(초기, _|-(1,0))
■ 부호함수( _|-(1,-1))
■ 선형함수(/자)
■ 시그모이드함수(S자(1,0), 미분 가능)
■ 하이퍼탄젠트 함수(S자(1,-1), 미분가능)
■ ReLU 함수(최근, _/자)
■ 2. 신경망의 구조
● 신경세포들이 서로 정보를 전달하는 연결 구조
○ 다층 전방향 신경망
■ multi-layer feedforward
● 입력층
● 은닉층
● 단층
● 은닉층 없다
입력층
정보전달만
출력층
실제 계산
● 다층
● 심층신경망
입력층
은닉층 여럿
출력층
● 출력층
■ 정보흐름
● 전방향
● feed-forward
● 회귀
● recurrent
● RNN
출력이 입력으로도, 같은 층안에서도 연결, 층없이 노드만 연결
■ Fully connected network, dense network
● 같은 층은 연결 안되고 다른 층과는 모두 연결
■ 3. 학습 알고리즘
● 신경망이 원하는 기능을 수행할 수 있도록 신경세포들 간의 연결 강도를 조정하는 방법
○ 성장하면서 뇌세포들간 연결 형성
○ 연결 형성 규칙
■ 연결된 두 신경세포가 동시에 활성화되면 연결강도는 강해짐
● 파블로프의 개실험
● 청각세포와 침샘세포 동시 활성화 반복
● 연결강도 강해져 종만 쳐도 침이 나옴
● Hebbian Learning Rule
● 신경망의 학습
○ 신경망이 원하는 기능을 수행할 수 있도록 만드는 것
○ 신경망에 어떤 입력 x가 주어졌을 때, 최종적으로 출력 y가 원하는 값이 되도록 가중치 w를 조정
■ 가중치 변화량을 결정하는 방법
● 학습알고리즘
● 학습데이터(자극)로 가중치 반복적으로 수정
● 신경망 점점 원하는 기능에 근접해 감
● 종류
● 지도학습
입력값 x에 대한 목표 출력값 t 함께 주어짐
출력값 y가 원하는 목표값 t에 가까워지도록 가중치 w 수정
오류역전파 학습 알고리즘
● 비지도학습
입력값 x만 주어짐
군집화
비슷한 입력에 대해 비슷한 출력을 내도록 학습
● 강화학습
입력 x에 대한 신경망의 출력값 y의 보상이 최대가 되도록 가중치 조정
○ 응용
■ 하나의 함수 취급
● 입력 x를 받아 출력 y를 계산
● y = f (x)
● 학습을 통해 함수 f의 형태를 조정
● 연결 가중치 w or 세타를 찾는 과정
○ 사용 이유
■ 표현 능력
● 어떤 형태의 함수도 표현할 수 있다
■ 학습 능력
● 데이터만 주어지면 최적의 함수를 찾을 수 있다
■ 일반화 능력
● 데이터 암기가 아니라 데이터에서 일반화된 규칙을 찾음
○ 새로운 데이터 규칙에 적용 처리 가능
다층 퍼셉트론
○ M-P 모델
■ 1943, MaCulloch & Pitts
■ 단일 신경세포에 대한 첫번째 모델
○ 퍼셉트론 모델
■ 1953, Rosenblatt
■ M-P 뉴런 여러개 연결하여 최초 신경망 모델 만듬
■ 패턴인식 수행
● 단층 전방향
■ 1. 뉴런
● M-P 뉴런
● 계단함수
■ 2. 연결 구조
● 단층
● 전방향
● 완전연결
■ 3. 학습 규칙
● 이진 입출력을 사용한 지도학습
■ 한계
● 선형 판별함수 사용
○ 비선형 결정경계를 표현할 수 없다
● 60년대 후반 Minsky & Papper가 한 직선으론 XOR 문제 못 푼다고 지적
○ 두 개의 직선으로 해결
■ 다층퍼셉트론
● 처음엔 학습알고리즘 몰랐다
○ MLP
■ 80년대, Multi-Layer Perception
■ 1개 이상의 은닉층 가짐
■ 1. 뉴런
● 출력은 입력에 대한 비선형 매핑
● 은닉층
○ 시그모이드함수(S자(1,0), 미분 가능)
○ 하이퍼탄젠트 함수(S자(1,-1), 미분가능)
■ 2. 연결 구조
● 다층
● 전방향
● 완전연결
■ 3. 학습알고리즘
● 오류역전파 알고리즘
○ 지도학습
■ 하나의 은닉층을 가진 MLP는 임의의 정확도로 모든 연속함수의 근사가 가능
● 복잡한 비선형 분류 문제 해결 가능
● 함수 찾기는 학습을 어떻게 하느냐
11장 신경망2
1. 다층 퍼셉트론의 학습
○ MLP의 수학적 표현
■ n개노드입력층-Wij가중치-Ujh가중합-m개은닉층-Vjk가중치-Uk0가중합-M개출력층
■ fk(x,세타)=yk
● yk: k번째 출력 노드는
● 함수fk와 입력x에 대해서
● 세타 = 가중치 w, v를 합한 파라미터
○ 학습 대상
○ 신경망의 학습이란
■ 원하는 함수를 나타내는 가중치(세타)를 찾는 것
■ 지도학습
● X = {(xi, ti)} (i=1,....,N)
○ 입력과 목표 한 쌍
○ x, t : 벡터
■ x n차원, t 출력M개
■ 학습목적
● 입력 xi에 대한 신경망의 출력 yi와 목표 출력 ti의 차이를 간소화
● 목표 함수로 오차 함수 사용
○ 평균 제곱 오차
● 최적의 가중치 세타
○ 오차함수를 최소화 하는 세타
● 오차함수
○ E(x, 세타)
○ 매우 복잡한 비선형 함수
○ 최적해 찾기
○ 기울기 강하 학습법
■ gradient descent learning method
■ 비선형 함수의 최소값을 찾아가는 반복적인 방법
■ 기울기 감소하는 방향으로 조금씩 이동
■ 오류역전파 학습알고리즘
○ MLP 전체 학습 과정
■ ① 임의의 값으로 가중치 파라미터를 초기화하고, 학습률 η과 원하는 오차함수의 목표값을 설정
■ ② 모든 학습 데이터에 대해, 한 번에 하나의 데이터를 추출하여 다음 단계에 따라 가중치를 수정하는 과정을 반복
■ [전방향 계산] 현재의 가중치 Wij, Vjk를 이용하여 출력값을 계산
■ [역방향 계산] 현재의 가중치 Wij, Vjk를 이용하여 오류를 계산
■ ③ 전체 학습 데이터에 대하여 ② 과정이 완료된 후, 학습 데이터 전체 집합 X에 대한 평균 제곱 오차 계산
■ ④ ③에서 계산된 오차값이 원하는 목표값보다 작으면 학습을 마치고, 그렇지 않으면 ②~③ 과정을 반복
○ MLP 학습의 고려 사항
■ 1. 지역 극소의 문제
● local minima problem
● 기울기 강하학습법
○ 기울기 감소하는 방향으로 기울기 따라 학습 진행
○ 기울기 수정을 아주 작게 하면 어느 순간 기울기 0이 되는 극소점에 도달
○ 전역 극소
■ 최적(제일 낮은)의 극소점
○ 지역 극소
■ 다른 극소점
● 지역극소에서 전역극소로 가는 법
● 학습률 적응적 조정, 시뮬레이티드 어닐링 기법
● 탐색의 시작점을 결정하는 초기치를 여러번 변화시키며 학습. 충분히 많은 수의 은닉 노드 사용
■ 2. 수렴 속도의 문제
● 원하는 해 수렴하기까지 긴 학습 시간 필요
● 기울기 완만한 곳(플라토)에서 오래걸림
○ 속도 높이는 방법
○ 모멘텀 방법, 뉴턴방법, 자연기울기 방법 등
■ 3. 학습 종료점 문제
● 원하는 오차까지 가면 종료
○ 그러나 얼만큼의 오류인지도 모르고, 달성해도 정말 좋은 성능인지 결정 못함
○ 검증 데이터 집합을 사용하여, 과다적합 피하기 위해 조기종료
■ 4. 은닉 뉴런의 수
● 입력노드와 출력노드 개수는 문제에서 주어지나
● 은닉 뉴런의 수가 학습의 속도와 찾아지는 해의 성능을 좌우
● 문제 의존적
○ 입.출력 문제에 따라 비례하여 개수 조정하며 적절 개수 결정
○ MLP 학습 전략
■ 학습 모드의 설정
● 온라인 모드
○ 각 데이터에 대해 가중치 조정
■ N개의 데이터면 N번 만큼
■ 오차 감소속도는 빠르나 학습이 불안정
● 배치 모드
○ 모든 데이터 전방향 계산 후 역방향 계산으로 오차 더하여 가중치 수정
■ N개의 데이터 1번의 가중치 수정
■ 오차 감소 속도는 느리나 학습이 안정적
● 미니 배치 모드
○ 두가지 혼합
○ 모든 데이터를 작은 부분 집합으로 나누어 가중치 수정
■ N개의 데이터를 m개의 그룹으로 나누고 m번의 가중치 수정
■ 데이터 규모 큰 경우에 적합
■ 모델 설정
● 은닉 노드의 수
○ 많을 수록 표현 가능 함수 다양하고 복잡해짐
○ 계산 비용, 일반화 성능 고려 문제에 맞게 적절히 결정
● 초기 조건 설정
○ 초기 가중치 작은 범위의 실수값으로 랜덤하게 설정
■ 학습마다 결과 달라짐
○ 학습률 1보다 작은 값에서 시작 조정
● 활성화 함수
○ 은닉노드
■ 시그모이드함수, 하이퍼탄젠트, ReLu 함수
○ 출력노드
■ 목표 출력값이 임의 실수값인 회귀문제
● 선형함수
■ 목표 출력값이 클래스레이블인 분류문제
● 시그모이드, 소프트맥스(모든 출력값 더하면 1) 함수
■ 오차함수
● 목표출력값과 신경망 내는 출력값 계산
○ 제곱오차함수
■ 회귀문제
○ 교차엔트로피 오차함수
■ 분류문제
■ 출력노드의 활성화 함수로는 소프트맥스 함수
응용: 숫자 인식
12장 딥러닝1
1. 딥러닝의 등장
○ 심층신경망 기반의 머신러닝 분야
■ 많은 수의 은닉층
■ 장점
● 더 효율적인 표현 가능
■ 단점
● 학습이 어려움
○ 느린 수렴 속도
■ 수행해야할 epoch 수가 많음
○ 낮은 일반화 성능
■ 표현력이 커져 노이즈까지 학습
● 과다적합
○ 학습 어려움 극복한 딥러닝
■ 1. 충분히 큰 데이터베이스
● 일반화 성능 떨어지는 것 막을 수 있다
■ 2. 높은 컴퓨팅 파워, GPU 활용 기술
● 속도 느린 것 해결
■ 3. 다양한 학습 기법의 발달
■ 4. 더 정교한 모델의 등장
● 입력 데이터에 맞는 신경망 모델들
○ 신경망 처리 과정 패러다임 변화
■ 기존 MLP
● 은닉층 1개인 얕은 신경망
● 특징추출(예, PCA)과 분류(예, SVM) 별도의 과정
■ 종단간 학습
● end-to-end
● 하나의 모델 안에서 특징추출한 후 분류 수행 과정
2. 학습 성능 향상을 위한 기법
○ 1. 기울기 강하 학습법의 근본적인 문제
■ 1. 지역 극소로 학습실패
● 오차가 충분히 작지 않은 지역극소에서 학습이 멈춤
○ 극소=미분이 0되는 점
○ 해결 불가 문제
○ 대안
■ Simulated annealing
● 학습률을 처음에는 크게, 차차 줄여감
■ 확률적 기울기 강하
● 한 번에 하나의 샘플만 사용
■ 2. 느린 학습
● 플라토 문제
○ 오차함수의 학습곡선에서 평평한 구간
○ 오차함수에는 플라토를 만드는 안장점이 무수히 많이 존재
■ 안장점=극대.극소가 아닌 극점
● 기울기 소멸 문제
○ 가중치 수정폭은 기울기의 크기에 의존
○ 출력층으로부터의 오차신호가 입력층으로 역전파 되어 내려오면서 점점 약해져서 학습이 느려짐
■ 활성화 함수 시그모이드 함수의 미분값인 입력값이 무척 작아 0에 가까움(셀포화 발생)
● 1보다 작은 값을 계속 곱해서, 학습이 느려짐
● 해결 방법
○ 다른 활성화 함수 사용하여 기울기 작아지는 문제 해결
■ ReLu 함수 미분 사용
■ softpluse, leaky ReLu, PReLu
● 코딩시 라이브러리에서 매개변수로 지정할 수 있음
○ 가중치 초기화
■ 셀포화가 일어나지 않도록 작은 값으로 설정
■ 각 뉴런의 가중치가 서로 달라지도록 랜덤하게 설정
○ 모멘텀(관성) 사용
■ 기울기 강하학습법의 기울기 수정식
■ 모멘텀항. 관성률 추가
■ 관성추가하여 학습
■ NAG 추가
○ 적응적 학습률
■ 학습의 속도 조정
● 큰 학습률
● 변화량 큼
● 가중치 변화 급격
● 작은 학습률
● 변화량 작음
● 안정적 학습
속도 느림
● 가중치마다 서로 다른(adaptive) 학습률
● RMSProp, AdaDelta, Adam(인기, RMSProp+모멘텀 방법)
○ 배치 정규화
■ 학습하는 동안 각 노드의 활성화 함수로 들어가는 입력이 셀 포화되지 않도록 정규화(일정하게) 함
○ 2차 미분방법
■ 두 번 미분하여 곡률 정보로 변경 활용
■ 이론적으로 좋으나 계산 시간 길어 실질적 사용 한계
■ 3. 과다적합
● 학습데이터에 포함된 노이즈까지 학습하게 되어 테스트데이터에 대한 정확도(일반화 성능)이 떨어지는 현상
● 가중치가 많으면 신경망 복잡해져 표현력 뛰어나나 과다적합 쉬움
● 해결 방법
○ 조기종료
■ 검증용 데이터 활용하여 발생전에 학습 종료
○ 정규항
■ 오차함수에 정규항 추가
● 가중치 커지지 않게 함
○ 드롭아웃
■ 학습시 가중치 수정시에만 임의로 선택한 은닉노드 일부 제외
■ 복잡도 낮게 학습 효과, 작은 모델 앙상블 평균과 유사효과. 많이 사용
○ 데이터 증대
■ 데이터 적을 때 과다적합 발생
■ 인위적인 변형으로 추가 데이터 생성
■ 데이터변형
● 일반데이터
● 노이즈 추가
● 영상데이터
● 크기조정, 회전, 위치이동, 자르기 등
3. 합성곱 신경망(CNN)
○ 심층신경망
■ CNN, 합성곱 신경망
● Convolutional Neural Networks
● 인간의 시작 피질에서의 정보 처리 기제로부터 영감을 받은 모델
● 영상데이터 처리에 적합
○ 딥러닝에서 가장 많이 사용
● 구조
○ 1. 신경세포(뉴론)
■ 3가지 신경세포 유형층
● 콘볼루션층
● 실제 두뇌의 시각 피질에서 영감 받음
● 뇌에서 실제 연산 수행
● 주어진 2D 입력에 콘볼루션 연산 적용해 특징맵 생성
● 해당 위치의 요소에 가중치를 곱해 모두 더하는 선형 연산
● 제로 패딩
● 입력 데이터 가장자리를 0으로 채움
● 2차원 격자 입력이 다중채널 형성하는 경우
● 입력영상이 RGB 컬러 영상이라면 패딩 없이 특징맵 생성
● 다양한 형태의 특징을 추출하려면
● 다수 필터 사용 다수의 특징맵 생성
● 보폭 stride
● 보폭=필터를 움직인 거리
● 필터를 움직이는 간격을 조정하여 특징맵 크기 변환
● 필터의 크기가 1X1인 경우
● 입력과 출력 동일 크기
● 다중 채널 입력에 다중 필터 적용시
데이터의 차원 축소 효과
● 서브샘플링(풀링층)
● 풀링연산으로 특징맵 크기 줄여줌
● 데이터의 작은 위치 이동 변화를 수용할 수 있음
● 완전연결
○ 2. 네트워크 구조
■ 층상구조
● 입력층
● 2D 격자(grid) 구조 x 다중 채널
● 2차원 입력 그대로 사용
● 콘볼루션층, 풀링층
● 2D 특징맵 X 다중 필터
● 부분적 연결, 가중치 공유
● 복잡함 낮춰 과다적합 해결
● 완전연결층
● MLP 구조와 같음
○ 3. 학습 알고리즘
■ 오류역전파 알고리즘 + 알파
● 알파: dropout, 배치, 모멘텀..
■ RNN, 순환신경망
● Recurrent Neural Networks
● 기본 RNN => LSTM, GRU
● 음성, 텍스트 같은 시계열 데이터 처리에 적합
12장 딥러닝2
1. 기본 순환 신경망 RNN
○ 순차 데이터 처리 모델
■ 순차 데이터 특징
● 음성, 문장, 동영상, 주식시세 등 순서 중요
● 데이터 길이 가변적
● 데이터 요소 사이에 문맥적 의존성 존재
○ 이전 내용의 기억 필요
■ 응용분야
● 기계번역, 음성처리 등
○ 기본적(vanilla) RNN 구조
■ 순환 신경망
● 은닉층에 자기 노드로 들어가는 가중치 있는 순환에지
○ 직전의 출력이 현재의 입력으로 사용
■ 응용 목적에 따라 입력요소와 출력요소의 대응관계가 달라짐
● 1:m
○ 이미지 캡셔닝
● m:1
○ 감정분류, 온라인 필기 문자 인식
● m:n
○ 기계번역, 프레임 수준의 비디오 분류
■ RNN 확장
● 다층 RNN
● 양방향 RNN
■ RNN 학습
● 시간 역전파 BPTT 학습 알고리즘 사용 지도학습
● 기울기 소멸 문제, 기울기 폭발 문제 발생
2. LSTM과 GRU
○ RNN 문제점(기울기 소멸.폭발)으로 등장
■ RNN보다 LSGM, GRU 많이 사용
○ LSTM
■ 장기 의존성 문제
● 시간에 따른 입력 신호에 대한 민감도
● Long Short Term Memory로 해결
○ 이전 시점의 셀의 값을 다음 셀의 전달 시 정도 조절
○ 게이트 통해 입출력 선별적 허용하여 이전 셀의 출력을 원하는 시점까지 유지.기억하여 장기의존성 문제 해결
■ 메모리 제어
● 망각 게이트, 입력 게이트
■ 출력 제어
● 출력 게이트
■ 구조 RNN과 유사하나 셀만 다름
● RNN 셀
○ 셀의 출력만 순환
● LSTM 셀
○ 셀의 출력과 셀의 내부상태(셀이 기억하는 내용) 순환
○ 셀의 기능
■ 망각 게이트
● 이전 셀의 상태를 어느 정도 잊어버릴 건가 결정
● 시그모이드 함수
■ 입력 게이트
● 셀 상태에 새로운 정보를 추가하는 정도를 조정
● 셀 출력할 후보의 값 범위
■ 셀 상태 갱신
● 새로운 셀 상태를 갱신
● 기억.망각할 정보 결정 + 새로운 정보 추가
■ 출력 계산
● 출력게이트와 셀의 출력 계산
○ GRU
■ Gated Recurrent Unit
■ LSTM 셀의 연결 구조 복잡(학습 파라미터 많음)
● LSTM 셀 구조 단순화
○ 2개의 입력 Xt, 하나의 출력 ht
■ 셀 상태 Ct 없음
○ 2개의 게이트
■ 갱신 게이트
● 입력게이트+망각게이트
● 한 시점의 출력을 위해 받아 들일 새로운 내용과 이전의 출력 내용의 비율을 조정
■ 리셋 게이트
● 이전의 출력을 어느 정도 받아들일지 조정하는 부분
13장 딥러닝 응용1
1. 컴퓨터비전 응용
○ 컴퓨터 비전
■ 영상데이터를 주요 처리 대상으로 하여 인간의 다양한 시작적 정보처리를 기계에 구현하려는 분야
■ 인공지능과 별도의 분양
■ 카메라, 적외선카메라, 레이더, X-ray, 초음파, CCTV, 블랙박스
■ 딥러닝 모델 입/출력 기준 구분
● 영상이해
○ 영상을 입력받아 추상적 개념이나 정량적인 정보량 출력
○ 정보량: 객체정보(분류), 패턴클래스, 두 영상간 의미적 유사도
○ Object Recognition
○ object detection and localization
○ object description
● 영상 변환
○ 영상을 입력받아 변환된 새로운 영상 출력
○ image sementation
■ e.g. 의미적 유사성
○ image enhancement
■ e.g. super resolution
● 영상 분할
○ 의미적 semantic 영상분할
○ 의료 영상
■ 치과 x-ray
● Super Resolution
○ 저해상도 영상, 고해상도로 복원
■ SRCNN2014->VDSR2016->SRGAN2017->EDSR2017->DBPN2018...
● 영상 생성
○ 출력으로 새로운 영상 생성
■ GAN
● 딥러닝 모델
■ 다양한 입력형태로 확장
● 동영상, 3D 입체 영상
○ 시간. 순환 연결을 가진 CNN, 3D CNN
● Visual Question and Answering
○ 영상 신호와 자연어 처리 결합
■ CNN(VGG NET), LSTM 이용
2. 객체인식을 위한 CNN 모델
○ Transfer Learning 위해 기존의 모델 공부해야
○ 객체인식과 ILSVRC ImageNet Large-Scale Visual Recognition Challenge 2010년 부터 객체 분류 및 위치 탐지 localization 문제 경진 대회
■ ImageNet(영상 DB), 10000개 클래서, 120만개 영상+클래스레이블 => 지도학습
■ 2012년부터 딥러닝 모델 우승
■ 2012 SuperVision 16.4% 오류율
● AlexNet
○ 객체 인식 모델 성공
○ LeNet CNN과 유사
■ 8층
○ 미니배치 모드 128
○ 모멘텀 0.9
○ 드롭아웃 0.5
○ 학습률 0.01
○ 정규항 조정 파라미터 0.0005
○ 가중치초기화: 가우시안 분포(평균 0, 표준편차 0.01_
■ 2013 ZFNet 11.7%
■ 2014 2위 VGG Net-19 7.3%
● 가장 인기. 사용많음
○ 이 모델과 가중치 다 제공하므로 가져다 쓰기 좋음
● LeNet, CNN과 유사
○ 19층
● 다양한 층수 여러 버전 제공
■ 2014 GoogLeNet 6.7%
● Inception Net
○ 인셉션 모듈
■ 하나의 층에서 다른 크기의 여러 필터 사용, 효과적인 결합 모듈
■ 1X1 콘볼류션 사용하여 차원 축소, 계산 비용 줄임
○ 22층
■ 층이 많으면 학습 저하
■ 2015 ResNet 3.57%
● 사람 수준
● Residual Net
○ 잔차 블록으로 학습 부담 줄어짐(스킵 연결 등)
○ 층 많아도 성능 저하 없이 학습 가능
3. 영상이해를 위한 딥러닝
○ 다중 객체 검출
■ 슬라이딩 윈도우(스캔)
● 시간 오래 걸림
■ 후보 영역 제안
● R-CNN
○ Region-based Convolutional Network
○ 2000개까지 후보 영역 제안
■ CNN
● 영역 분류
● Faster R-CNN
○ 병렬 처리로 속도 개선
■ YOLO
● You Only Look Once
○ 객체 탐지와 인식 한 번에 수행
■ 영역제안X
■ 간단하고 빠름
● 실시간 동영상 사용
■ R-CNN 보다 성능 떨어짐
■ Show and Tell
● CNN으로 영상, RNN으로 자연어 처리
■ Show, Attend and Tell`
● 단어 해당하는 영상 부분에 attetion
4. 영상변환 및 생성을 위한 딥러닝
○ 오토인코더 모델
■ 입력 영상 점점 줄여서 압축된 코드 만들고 encoding, 다시 출력 영상 생성 decoding
■ U-Net
● CNN 기반
● 의료 영상 분할용
● U자형 구조
○ Contration Path(인코더), Expanstion Path(디코더), skip connection
■ GAN
● Generative Adversarial Networks
○ Ian Goodfellow, 학회 NIPS 2014 발표
● 영상 생성에서 영상 변환으로 확장
● 2014 논문 24편 ~ 2020 762편
● 2개의 네트워크로 구성
○ Generator
■ 랜덤 입력으로 이미지 생성
■ 목표 출력값 없음
○ Discriminator
■ 입력 영상이 실제 영상인지 생성기가 만든 가짜영상인지 판별
● 목표: 판별기 속이는 수준
○ 두 학습기 상반된 학습 수행
■ G는 D 속이고, D는 G 구분
● Cycle GAN
○ unpaired image-to-image translation
■ 얼룩말-> 일반말, 여름-> 겨울
● CoGAN
○ image transfer with different attributes
■ 이미지안 특성 변환
■ 머리 색깔, 무표정->미소 변환
■ 화질 떨어짐
● Progressive GAN(ICLR2018)
○ Karras, NVDA 개발자
○ 고해상도 영상 생성을 위해 G/D를 층별로 점진적으로 학습
● Style GAN(CVPR2019)
○ 스타일 조정을 위한 매핑 모듈 추가
■ 성별, 포즈, 머리색, 피부색 등
14장 딥러닝 응용2
1. 자연어처리 응용
○ NLP
■ 자연어
● 인간의 언어
● 자연어처리
○ 컴퓨터로 언어를 이해하고
○ 번역하고
○ 조작하기 위한
○ 인공지능의 한 분야
■ 인공언어
● 특정 목적위해 만든 언어
● 자연어보다 엄격한 문법
● 프로그래밍 언어
○ 자연어처리 구성 요소
■ 형태소/어휘 분석
● Morphological and Lexical Analysis
● 문장을 이루는 최소 의미 단위인 형태소로 분리
○ 접두사+어간+접미사...
● 중의성, 접두사/접미사 처리 등 난제
● 언어에 따른 난이도 다름
■ 구문 분석
● Syntactic Analysis
● 파싱
○ 주어진 문장의 구조를 문법에 맞춰 분석
■ S+V+O
● 구조적 중의성
○ Time flies like light
■ 시간은 빛과 같이 빠르다
■ 타임 파리들이 빛을 좋아한다
■ 의미 분석
● Semantic Analysis
○ 의미 규칙
● 구문 분석 결과에 의미를 가하여 문장이 가진 의미 분석
● 문법은 맞으나 의미적으로 틀린 문장 검사
● 의미적 중의성으로 어려움
○ 말이 많다(동물, 수다)
■ 담론 통합
● Discourse Integration
■ 화용(어용) 분석
● Pragmatic Analysis
○ 문맥 정보
● 문장이 실제로 사용될 때 연관관계를 분석
● 담화 분석
○ discourse analysis
○ 상호 참조
■ coreference
■ 대명사가 지시하는 대상 확인
○ 화행 분석
■ Speech act
■ 발화의 의도 분석
● 실세계의 지식 필요
○ 자연어 처리 어려움
■ 문법과 규칙에 기반
● 많은 예외사항
■ 모호성(중의성) 존재
● 문맥 정보와 엄청난 양의 지식 필요
■ 높은 차원
● 많은 개수의 단어 사용
○ 효율적인 표현 방법 필요
■ 순차적인 입력과 출력
● 시퀀스가 중요
■ 머신러닝/딥러닝이 NLP의 좋은 도구가 될 수 있다
○ 자연어처리 응용
■ 음성신호처리
● 음성인식
○ ASR 시스템. STT
● 화자인식
○ 발화자 신원
● 음성합성
○ TTS
■ 대화 수행
● 상대방과 문장을 주고 받는 형식 작업
○ Ai 스피커, 챗봇
● 정보검색
● 질의응답 시스템
○ 대화 질문 의도 파악하고 답
● 목적지향대화
○ 특정 목적, 예매 등
○ Text Input->Text Response 이전 대화 기억하고 where, when 등 위해 반복
■ 텍스트분석
● 텍스트분류
○ 내용과 문맥 분석
○ 텍스트 분류
■ 감성인식
● 텍스트에서 좋아요로 표시
■ 주제분류
● 분야별, 주제별 기사 분류
■ 스팸필터링
● 정상, 스팸 분류
■ 분류 문제이기 때문에 기존 머신러닝 활용 많음
○ 텍스트요약
■ 추출 요약 extractive
● 적절 문장 선택하고 조합
● 중요 문장 고르는게 핵심
■ 추상적 abstractive
● 새로운 문장으로 요약
○ 기계번역
■ 고전적인 접근법
● 형태소.어휘 분석 등 거쳐 출력
■ 딥러닝 접근법
● neural machine translator
● 입력문장 인코더에서 압축-> 디코더에서 새로운 문장 복원출력
● Seq2Seq
● 인코더: RNN(LSTM)
● 디코더: LSTM
● 기계번역, 텍스트요약
2. 자연어처리를 위한 머신러닝 기법
○ 데이터 수집
■ Corpus collection
● 텍스트 말뭉치
● 구글 n-gram corpus
● COCA, 미 영어 4억단어
● 모두의 말뭉치-국립국어원
● Wordnet
○ English lexical database
○ 데이터 전처리
■ Tokenization
● 말뭉치를 의미있는 기본 단위(토큰)으로 나누는 작업
● 고려사항
○ 단어, 문장, 구, 형태소
○ 구두점, 특수문자 처리
○ 줄임말, 단어내 띄어쓰기
○ 한국어 조사, 어간, 어미 분리
● 토큰의 품사 태깅 작업
○ fly v.날다. n.파리
■ Cleaning
● 말뭉치에서 데이터 분석에 방해되는 노이즈 데이터 제거
○ 불필요 단어 제거
■ 등장 빈도 적은 단어, 길이 짧은 단어(전치사 등)
○ 정규표현식 사용 특정 표현 제거
■ 해시태그, 기사 날짜 등
■ Normalization
● 표현 방법이 다른 단어들을 하나의 단어로 통합
○ 표기가 다른 단어들의 통합
■ US, USA
○ 대소문자 통합
○ 데이터 표현
■ One-hot vector
● 토큰=단어
● 각 단어를 고유 정수로 매핑하고 원핫벡터로 표현
● 원핫인코딩
● 한계
○ 단어수가 많아지면 차원이 높아짐
○ 단어 간의 유사도 반영 불가
■ Bag of words
● 단어 가방, BoW
● 단어의 출현 빈도수 고려한 텍스트 표현 방법
○ 각 단어에 고유한 정수 인덱스 부여
○ 입력 텍스트에 각 단어의 출현 횟수 계산
○ 각 단어의 대응 위치에 출현 회수를 정수값으로 표현
● 자주 표현하는 단어가 잘 표현됨
● 단어의 발생 위치는 고려 안함
■ TF-IDF
● Term Frequency-Inverse Document Frequency
● Document-Term Matrix
○ 다수 문서에 등장하는 각 단어들의 빈도수를 표현한 행렬
● 문서 내의 단어의 빈도수와 문서의 빈도를 함계 고려한 표현 방식
○ TF
■ 문서에 단어가 나타나는 횟수
○ DF
■ 단어가 나타나는 문서의 빈도수
● TF-IDF
○
○ 데이터 분석(학습)
■ Word Embedding Language model
● Sentense Similarity
● Text Classification
● Sentence Generation
■ 단어의 의미를 포함하는 벡터(임베딩벡터)로 표현
● 원핫벡터(몇십만 차원)를 저차원(몇 백차원) 실수 공간의 벡터로 변환
■ 유사한 의미의 단어를 가까운 위치에 표현
■ Word2Vec
● 선형변환행렬 W(원핫벡터를 저차원벡터로 변환)를 학습, 입력단어 사영하여 임베딩벡터 구함
○ 영상 PCA 와 유사
○ 문맥정보 활용 학습 수행
○ 은닉층이 1개인 간단 신경망
● 학습방식에 따라 두 모델
○ CBow
■ 주변단어 입력으로 중심단어 예측
○ Skip-gram
■ 중심단어 입력으로 주변단어 예측
○ Word2Vec
● Korean Word2Vec
3. 언어 모델을 위한 딥러닝
○ 언어 모델
■ 단어 시퀀스를 입력으로 받아 확률값을 출력하는 일종의 함수
● 단어의 시퀀스가 자연어 표현으로서 얼마나 적절한지 평가하는 값
● 구현방법
○ 조건부 확률 이용
○ 딥러닝 이용
■ RNN 사용
■ 언어모델의 활용
● 문장 생성(요약, 번역 등)
● 오타 교정
■ RNN Language Model
● 텍스트분류(감성, 주제 분류 등), 기계번역에 활용
■ Seq2Seq 모델
● 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력
○ 기계번역, 대화, 질의응답, 요약, STT 등에 응용
● RNN(LSTM, GRU) 구조
○ 인코더
■ 입력: 임베딩 벡터로 표현된 단어의 시퀀스
■ 출력: 입력시퀀스를 하난의 벡터로 압축한 문맥 벡터
○ 디코더
■ 입력: 인코더에서 출력된 문백 벡터
■ 출력: 단어 벡터를 순차적으로 출력
● Seq2Seq 모델
● 문제
○ 인코더로부터 얻어진 정보를 하나의 고정된 특징벡터로 요약/압축=> 정보손실
○ 입력문장의 길이가 길어지면 성능 저하
○ attention 모듈로 해결
■ 디코더에서 출력 단어 생성때마다 인코더의 전체 상태에 대한 선택적 주의를 통해 참조하는 방식
■ attention 모델
■ Transformer 모델
● Seq2Seq 모델의 인코더-디코더 구조 사용
● RNN 구조 없애고 여러개의 인코더와 attention만으로 구현
○ 기존의 순차적 연산이 아닌 병렬처리 가능 모델
● 인코더
○ 한 번에 전체 시퀀스 입력
● 디코더
○ 순차적으로 생성
● 빠른 학습, 우수한 성능
● Bert
○ Bidirectional Encoder Representations from Transformers
○ 레이블링되지 않은 대용량 데이터로 모델 미리 학습, 특정 태스크의 레이블링된 데이터로 전이학습
○ Google 의 새로운 언어 모델
■ 2018 Bert
■ 2019 ViLBert
● Vision+Language
■ KorBert
● 한글
○ 3종류의 입력 임베딩 수행
■ 토큰, 세그먼트, 포지션
○ 문장 간 연관 관계, 질의응답, 감성.기사 분류, 품사 태깅 등 가능
○ 전략
■ 사전학습 단계
● 방대한 양의 데이터로 언어모델 구축
● 책 말뭉치 8억 단어+ Wikipedia(25억 단어) 학습
■ 미세조정 단계
● 사전 학습 모델을 특정 NLP 문제에 맞춰 추가 학습
● 12개의 자연어처리 문제에 대해 최고 성능 기록
● GPT
○ Generative Pretrained Transformer
○ OpenAi
■ 2018 GPT
■ 2020 GPT3
● 파라미터 1750억개
● 디코더 기반 미세조정 단계 필요 없음
○ 트랜스포머의 디코더 모델 발전시켜 다음 단어 예측 성능 우수
■ 텍스트 생성에 주소 사용
○
15장 강화학습
1. 강화학습의 개요
○ 머신러닝 유형
■ 지도학습
● 학습시 목표 출력값(교사) 함께 제공
○ 분류, 회귀
■ 비지도학습
● 목표출력값 없음
○ 군집화
■ 준지도학습(semi)
■ 약지도학습(weakly)
■ 강화학습
● 출력값에 대한 교사 신호가 '보상'reward형태로 제공
● 교사신호는 정확한 값이 아니고, 즉시 주어지지 않음
○ 좋다.나쁘다. 이겼다.졌다 등 보상 가능
○ 강화학습 적용 케이스
■ 2017 알파고
● 몬테카를로 트리 탐색, 딥러닝, 강화학습
■ 아타리attari 게임
● 블록깨기 게임등
● AlphaStar(스타크래프트)
● DQN 모델
○ CNN+Q학습
○ 49 종류 모든 게임에 하나의 신경망 모델 만 사용
■ 29 게임 사람보다 우월
■ 로봇 제어
● 모방학습
○ 사람의 비디오 보고 로봇이 흉내, 동작 배우도록 학습
○ 정확한 목표값은 주지 못하나, 동작의 결과는 평가
■ 시스템 제어
● 시스템 최적화
○ 구글 딥마인드 데이터센터 쿨링시스템
■ 비용 40% 이상 절약
■ 정확한 목표값(온도 등) 주지 못하나, 최종의 결과인 전기료 절약 평가
■ 주어진 상황에서 최적의 제어신호에 대한 정확한 목표값을 주기는 힘들지만, 제어 동작을 수행했을 때 그 결과에 대해 성공 여부의 평가가 가능한 특성
■ 제어 문제(주어진 조건이나 상황에서 어떤 동작을 취해야 할지를 결정하는 문제)를 표현하고 해결하는 응용 분야에 주로 사용
● 시간에 따른 순차적 개념 존재
○ 이전 상황이 현재 시점 결정에 영향
○ 강화학습 개요
■ 출력값에 대한 교사 신호가 보상 형태로 제공
● 목표 출력값 없음
● 최종 목표를 지정하고 매 순간 학습 시스템이 취하는 행동의 결과에 따라 보상
■ 학습의 목적
● 최종적으로 얻게 되는 누적 보상의 최대화
○ 목표 달성에 적절한 행동
■ 양의 보상
○ 목표 달성에 부적절한 행동
■ 음의 보상(벌점)
● 보상을 통해 좋은/나쁜 행동을 배워 행동방식을 긍정적 방향으로 "강화"한다
○ 강화학습의 계산 모델
■ 구성
● 행동을 결정하는 주체로서 에이전트
○ 누적된 보상을 최대화하는 최적의 행동 결정
● 상태 변화와 보상을 결정하는 주체로서 환경
● 행동, 상태, 보상
■ 필요 요소
● 마르코프 결정 프로세스(MDP)
○ 문제를 MDP로 모델링 해야
○ 에이전트와 환경의 상호작용을 수학적으로 표현한 것
○ 정책 policy
■ 에이전트가 행동 선택할 때의 규칙
■ 에이전트가 현재 상태를 입력받아 적절한 행동을 결정하면, 현재 상태가 다른 상태로의 전이가 발생하고, 전이된 상태의 상대적 효과와 가치에 따라 보상이 결정됨
○ 학습의 목적
■ 주어진 MDP에서, 최종 누적 보상이 최대가 되도록 매 순간 최적의 행동을 결정하는 정책을 찾는 것
○ 마르코프 성질 Markov property
■ 이것을 만족해야
■ 다음 행동은 현재의 상태(상황)에 의해서만 결정된다
● 이전 선택은 영향 미치지 않음. 현재 상태만
● 문제 해결 과정 방법이 쉬워짐
○ <가능한 상태의 유한집합S, 가능한 행동의 유한집합A, 상태 전이확률P, 보상 함수R, 할인율y>의 튜플
■ 문제를 이것으로 모델링 해야
■ MDP 예
○ 정책 π
■ 에이전트가 행동을 선택할 때 사용하는 규칙
■ 주어진 상태에 대한 행동의 조건부확률 π(a|s)로 표기함
■ 주어진 MDP에서 최적의 행동을 결정하는 정책을 찾는 것이 학습의 목표
○ 수익(이득) Gt
■ 누적 보상을 최대화하기 위한 좋은 정책의 평가기준
■ 시점 t에서부터 얻어지는 보상에 대해 할인율을 곱해서 더한 총할인보상 total discount reward(누적보상)
○ 어떻게 최적 정책을 찾나
■ 상태와 행동에 대한 가치 평가 수행
● 상태 가치함수 vπ(s)
● 상태 s에서 시작해서 정책 π에 따라 행동을 취하였을 때 얻을 수 있는 기대 보상
● 행동 가치함수 qπ(s,a)
● 주어진 정책 π에 따라 상태 s에서 행동 a를 선택하였을 때 얻을 수 있는 기대 보상
● "Q 함수"
● 최적 상태 가치함수
● 가능한 모든 정책에 대해 최대값을 갖는 상태 가치함수
● 최적 행동 가치함수
● 가능한 모든 정책에 대해 최대값을 갖는 행동 가치함수 -
● 최적 정책
● 최적 행동 가치함수를 구하고, 이를 최대화함으로써 구할 수 있음
○ MDP에서 학습의 어려움
■ 에이전트는 상태와 보상에 관해 오직 지역적/부분적 정보만 이용 가능
■ 보상이 즉시 주어지기보다는 긴 시간 동안 지연 발생
■ 상태전이와 보상이 비결정론적인 경우, 함수식으로 정해지지 않거나 알려지지 않기도
■ 상태공간과 정책공간이 너무 방대
■ 비효율적 학습
■ 심층 Q학습이 좋은 해결책이 되고 있음
2. Q-학습과 심층 Q-신경망
○ Q-함수
■ 행동 가치함수 Qπ(s,a)
■ Q–값
● 주어진 상태–행동 쌍의 기대 보상
○ Q-함수의 값
■ Q–학습
● 최적 정책π*을 얻기 위해 최적 Q–함수Q*(s,a)를 추정하는 방법
○ Q–학습 알고리즘
■ ① 각 상태 s와 행동 a에 대해 Q-hat(s,a)를 0으로 초기화
■ ② 임의의 상태 s를 현재 상태로 지정
■ ③ 다음 과정을 무한히 반복함
■ ③–1. 행동 a를 선택하고 실행
■ ③–2. 즉각적인 보상 r을 얻음
■ ③–3. 새로운 상태 s'를 얻음
■ ③–4. 보상 r과 새로운 상태 s' 정보를 사용해서 Q-hat(s,a) 을 갱신 Q-hat(s,a) = r + maxa' Q-hat(s',a')
■ ③–5. s ← s'
○ Q–테이블
■ 이산적인 값을 갖는 Q–함수의 값을 테이블 형태로 표현한 것
○ Q-학습 알고리즘의 ③–1 과정에서 행동 선택을 위한 전략
■ 탐험은 랜덤하게 다른 행동을 선택하고 탐사는 현재의 Q–함수 정보를 바탕으로 최적의 행동을 선택
■ 탐험, 탐사, 혼합 전략(“엡실론 탐욕 방법")
● 엡실론 탐욕 방법E-greedy은 탐험과 탐사를 혼합한 전략으로 시간이 지남에 따라 탐험 정도는 감소시키고 탐사 정도를 증가시킴
○ 할인된 미래보상
■ 할인율(γ)을 적용한 Q–함수의 갱신 규칙
■ Q-hat(s,a) = r + γ maxa' Q-hat(s',a')
○ 비결정론적 환경
■
■ 결정론적 모델
● 어떠한 임의성도 없이 초기 조건과 파라미터에 의해서만 모델의 출력과 행동이 전적으로 결정
■ 비결정론적 모델
● 모델에 임의성이 내재되어 있어서 하나의 동일한 초기 조건과 파라미터의 집합일지라도 서로 다른 여러 개의 출력을 생성
● 비결정론적 모델에서의 Q–학습의 갱신 규칙
○ 학습률과 유사한 개념의 신뢰 요소 α를 사용
○ Q-hat(s,a) = (1-α)Q-hat(s,a) + α[r + γ maxa' Q-hat(s',a')]
○ Q–신경망
■ Q–함수를 테이블이 아닌 근사함수로 신경망을 이용해서 표현하고 추정하는 것
■ ① 입력으로 상태와 행동이 주어지면 출력으로 주어진 상태에서 해당 동작을 취하였을 때의 기대 보상을 제공하는 형태
■ ② 입력으로 상태만 주어지고 출력층이 주어진 상태의 각 행동에 대한 Q–값으로 구성되는 형태
■ Q-신경망 모델 Q-Network
■ 학습의 불안정성으로 인해 수렴이 보장되지 않아 DQN(Deep Q–Network, 심층 Q–신경망) 등장
○ DQN
■ Deep Q-Network: 심층신경망
● 경험 재현
○ 재현을 통해 학습 데이터의 시퀀스를 재구성
○ 데이터 간의 높은 상관관계에 따른 문제 해결
● 목표망
○ 원래의 Q–신경망과 같은 구조를 갖지만 다른 파라미터를 가진 별도의 신경망
○ 시변적인 목표 출력값 문제 해결
■ CNN 구조를 이용하여 원래 영상의 픽셀 데이터를 입력으로 받아들여 미래 보상을 추정하는 행동 가치함수에 대한 근사함수
■ 아타리 비디오 게임에 적용하여 성능 입증
■ 입력층과 출력층을 제외하고, 2개의 콘볼루션층(나중에 하나의 층이 더 추가됨)과 2개의 완전연결층으로 구성
2023 2학기 머신러닝 중간 과제 수행 보고서
학번: 202323-330304
이름: 최지환
I. 과제 개요
1. KNN-data.zip의 train data를 K-근접이웃 방법(K-Nearest Neighbors, KNN)으로 분류하고 결과 표로 비교. 유클리디안 거리를 사용하고 K값 5, 10, 20, 30으로 설정하여 수행
2. KNN-data.zip의 test data를 K-근접이웃 방법(K-Nearest Neighbors, KNN)으로 분류하고 결과 표로 비교. 유클리디안 거리를 사용하고 K값 5, 10, 20, 30으로 설정하여 수행
3. 실험 결과를 정리한 분류율 정리표와 검증 결과를 통해 결과를 분석
II. 코드 개요
K-근접이웃 방법(K-Nearest Neighbors, KNN)을 사용하여 주어진 학습 데이터를 분류하고 테스트 데이터의 분류율과 최적 K값을 찾아 검증한다.
III. 코드 스텝별 설명
1. 필요 라이브러리 불러오기
• import numpy as np: NumPy는 수학 및 배열 연산을 위한 라이브러리로, 별칭 np.
• import pandas as pd: Pandas는 데이터 처리를 위한 라이브러리로, 별칭 pd.
• import matplotlib.pyplot as plt: Matplotlib라이브러리의 pyplot 모듈은 데이터 시각화용.
• from matplotlib import font_manager, rc: Matplotlib에서 font_manager와 rc 모듈 그래프용 글꼴 설정 관리용.
2. 그래프용 한글 글꼴 설정:
• font_name 변수에 한글 글꼴 파일 경로 설정.
• rc('font', family=font_name): Matplotlib의 글꼴을 한글 글꼴로 변경.
3. 유클리드 거리 계산 함수 정의:
• euclidean_distance(x1, x2): 두 데이터 포인트 x1과 x2 사이의 유클리드 거리를 계산하는 함수 정의.
4. KNN 모델 정의
• class KNN: KNN 분류 모델 클래스 정의
• K 기본값 5로 설정
• Fit: 모델 학습용 메서드
• Predict: 예측 메서드
• _predict 실제 예측 수행 보조 메서드
① 유클리디안 거리 계산
② 가까운 K개 데이터 포인트의 인덱스 구함
③ 해당 인덱스에 대한 레이블을 찾음
④ 주변 데이터 포인트 중 가장 자주 나오는 클래스를 결정
5. 과제물 입력 데이터 불러오기, 열 이름 설정 및 파일 확인
• train_data_path와 test_data_path 변수에 학습 데이터와 테스트 데이터 파일 경로를 설정.
• pd.read_csv로 train과 test CSV 파일을 읽고, 열 이름을 ['column1', 'column2', 'class']로 설정.
• Train과 test 파일 내 데이터 확인
6. KNN 모델 생성 및 학습
• knn_model 함수를 정의: 주어진 학습 및 테스트 데이터에 대해 과제에 주어진 K 값들에 대한 KNN 모델을 학습하고 결과를 results에 반환.
• 테스트 데이터 준비: 주어진 test_data에서 특성 데이터('column1'열과 'column2'열)를 추출하여 X_test에 저장하고, 클래스 레이블을 'class'열에서 추출하여 y_test에 저장하여 모델 평가에 사용.
• 주어진 K 값(아래 7의 k-values인 5, 10, 20, 30)으로 아래 작업들 반복 수행
• train_data에서 특성 데이터('column1'과 'column2')를 X_train에 저장, 클래스 레이블을 'class'에서 추출하여 y_train에 저장
• 저장된 학습 데이터(X_train 및 y_train)를 사용하여 여러 K 값에 대한 모델을 각각 학습하고 평가
• 클래스 레이블 추출하여 classes 변수에 저장
• 모델 학습(knn.fit): 데이터에서 패턴 학습, X_train은 학습할 데이터의 특성(컬럼의 수치), y_train은 각 학습 데이터에 대한 답(클래스 레이블), 이 데이터의 특성과 답의 관계를 학습해서 '가중치'와 '매개변수'로 표시
• 모델 예측(y_pred): 학습된 모델의 패턴과 관계로 새로운 데이터에 대한 예측. X_test는 테스트 데이터의 특성. Knn.predict는 함수 호출하여 X-test에 대한 예측 생성. 즉, 각 테스트 데이터 포인트에 대해 가장 가까운 이웃 데이터 포인트들의 클래스를 예측. 이 예측 결과를 y_pred에 저장.
• 분류율(정확도) 계산: 모델이 예측한 값 y_pred와 실제 정답 y_test를 비교하여 두 값이 같은 경우인 정확하게 예측한 데이터의 수를 표시.
• 오분류율 계산: 1-분류율
• 혼동 행렬(cm) 계산(검증용): 각 클래스를 얼마나 정확하게 분류하는지 분석. 실제 클래스(y_test[i])와 예측 클래스(y_pred[i])를 비교하여 각각 조합에 속하는 데이터 포인트 수를 누적.
• 정밀도, 재현율, F1 점수 계산(검증용): 혼동 행렬 사용하여 분류 모델 성능 평가 지표들 계산.
① 정밀도(Precision): 모델이 양성 클래스로 예측한 경우 중 실제로 양성인 비율을 표시. 정밀도가 높을수록 모델이 양성으로 예측한 경우, 그 예측이 실제로 양성인 확률이 높다.
② 재현율(Recall): 재현율은 실제 양성 클래스 중 모델이 양성 클래스로 예측한 비율을 표시. 재현율이 높을수록 모델은 실제 양성 사례를 더 잘 감지.
③ F1 점수(F1 Score): F1 점수는 정밀도와 재현율의 조화 평균. 정밀도와 재현율 간의 균형 제공.
7. 과제에 주어진 K 값들 정의
k_values 변수에 과제에서 주어인 K 값들(5, 10, 20, 30) 리스트로 설정.
8. K값별 모델 학습(학습 및 테스트 데이터) 결과 및 검증 수치 결과 출력
소수점 1자리까지 반올림하여 %로 변환하여 출력
“1) 학습 데이터 결과표”
“2) 테스트 데이터 결과표”
9. 최적 K 값 출력
학습 데이터를 기반으로 가장 낮은 오분류율을 가지는 최적 K 값 출력
“3) K 최적값의 테스트 데이터 분류율 및 검증 데이터”
10. K 값별 오분류율 비교 그래프 그리기
matplotlib을 사용하여 K 값에 따른 학습 데이터와 테스트 데이터의 오분류율과 최적 K값을 그래프로 시각화
IV. 실험 결과표(코드 출력 결과)
1) 학습 데이터 결과표
K |
분류율 |
오분류율 |
정밀도 |
재현율 |
F1 점수 |
5 |
89.3% |
10.7% |
89.3% |
89.3% |
89.3% |
10 |
89.3% |
10.7% |
89.3% |
89.3% |
89.3% |
20 |
87.3% |
12.7% |
87.3% |
87.3% |
87.3% |
30 |
86.7% |
13.3% |
86.7% |
86.7% |
86.7% |
2) 테스트 데이터 결과표
K |
분류율 |
오분류율 |
정밀도 |
재현율 |
F1 점수 |
5 |
83.3% |
16.7% |
83.3% |
82.9% |
83.1% |
10 |
80.0% |
20.0% |
80.0% |
79.5% |
79.8% |
20 |
80.0% |
20.0% |
80.0% |
79.5% |
79.8% |
30 |
80.0% |
20.0% |
80.0% |
79.5% |
79.8% |
3) K 최적값의 테스트 데이터 분류율 및 검증 데이터
K |
분류율 |
오분류율 |
정밀도 |
재현율 |
F1 점수 |
5 |
83.3% |
16.7% |
83.3% |
82.9% |
83.1% |
4) K값별 오분류율과 최적 K값 그래프
V. 결과 분석
주어진 K 값에 따라 KNN 모델을 학습하여 성능을 비교하고 최적 K 값을 찾았다. 최적 K 값은 테스트 데이터에서 오분류율이 17%로 가장 낮은 5였다.
이 결과를 검증하기 위해 혼동 행렬을 사용하여 다음 같은 계산 결과로 클래스 간의 분류 성능을 분석하였다.
정밀도 (Precision): 정밀도는 모델이 양성 클래스로 예측한 경우 중에서 실제로 양성인 비율을 나타냅니다. 정밀도가 높을수록 모델이 양성으로 예측한 경우, 그 예측이 실제로 양성인 확률이 높습니다. K값별 계산 결과값에서 K=5의 정밀도가 학습데이터 89%, 테스트 데이터 83%로 가장 높았다.
재현율 (Recall): 재현율은 실제 양성 클래스 중에서 모델이 양성 클래스로 예측한 비율을 나타냅니다. 재현율이 높을수록 모델은 실제 양성 사례를 더 잘 감지한다. K값별 계산 결과값에서 K=5의 재현율이 학습데이터 89%, 테스트 데이터 83%로 가장 높았다.
F1 점수 (F1 Score): F1 점수는 정밀도와 재현율의 조화 평균입니다. 이것은 정밀도와 재현율 간의 균형을 제공한다. K값별 계산 결과값에서 K=5의 F1 점수가 학습데이터 89%, 테스트 데이터 83%로 가장 높았다.
또한, 추가로, K 값에 따른 학습 데이터와 테스트 데이터의 오분류율을 시각화한 그래프를 통해 K=5에서 오분류율이 가장 낮은 것을 쉽게 확인할 수 있었다.
===============================================
Python Code
# 방통대 머신러닝 2023년 2학기 중간과제물
# 202323-330304 최지환
#
# KNN-근접이웃 방법(K-Nearest Neighbors, KNN)을 사용하여
# 주어진 학습 데이터를 분류하고 테스트 데이터의 분류율과 최적 K값을 찾아 검증
#
#
# 1. 필요 라이브러리 불러오기
import numpy as np # 수학 및 배열 연산을 위한 라이브러리
import pandas as pd # 데이터 처리를 위한 라이브러리
import matplotlib.pyplot as plt # 데이터 시각화를 위한 라이브러리
from matplotlib import font_manager, rc # 그래프용 글꼴 관리 라이브러리
# 2. 그래프용 한글 글꼴 설정
font_name = font_manager.FontProperties(fname="C:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
# 3. 유클리드 거리 계산 함수
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2) ** 2))
# 4. KNN 모델 정의
class KNN:
def __init__(self, k=5):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
y_pred = [self._predict(x) for x in X]
return np.array(y_pred)
def _predict(self, x):
# 거리 계산
distances = [euclidean_distance(x, x_train) for x_train in self.X_train]
# 가까운 K개의 데이터 포인트의 인덱스를 구함
k_indices = np.argsort(distances)[:self.k]
# 해당 인덱스에 대한 레이블을 찾고, 가장 자주 나오는 클래스를 결정.
k_nearest_labels = [self.y_train[i] for i in k_indices]
most_common = np.bincount(k_nearest_labels).argmax()
return most_common
# 5. 과제물 입력 데이터 불러오기 및 열 이름 설정, 입력 파일 확인
train_data_path = 'C:/Users/jihch/PycharmProjects/KNN/input/Traindata.csv'
test_data_path = 'C:/Users/jihch/PycharmProjects/KNN/input/Testdata.csv'
train_data = pd.read_csv(train_data_path, header=None)
train_data.columns = ['column1', 'column2', 'class']
test_data = pd.read_csv(test_data_path, header=None)
test_data.columns = ['column1', 'column2', 'class']
# 입력 데이터 확인용 데이터 개수와 디멘션 출력
print("학습 데이터 개수와 열")
print(train_data.shape)
print("테스트 데이터 개수와 열")
print(test_data.shape)
# 6. KNN 모델 생성 및 학습
def knn_model(train_data, test_data, k_values):
results = []
X_test = test_data[['column1', 'column2']].values
y_test = test_data['class'].values
for k in k_values:
X_train = train_data[['column1', 'column2']].values
y_train = train_data['class'].values
# 클래스 레이블 추출
classes = np.unique(y_train)
# KNN 모델 초기화
knn = KNN(k=k)
# 모델 학습: 데이터에서 패턴 학습, X_train은 학습할 데이터의 특성, y_train은 각 학습 데이터에 대한 답(레이블), 이 데이터의 특성과 답의 관계를 학습해서 '가중치'와 '매개변수'로 표시
knn.fit(X_train, y_train)
# 모델 예측: 학습된 모델의 패턴과 관계로 새로운 데이터에 대한 예측.
y_pred = knn.predict(X_test)
# 분류 성능 평가위한 정확도(분류율) 계산: 모델이 예측한 값 y_pred와 실제 정답 y_test를 비교하여 두 값이 같은 경우인 정확하게 예측한 데이터의 수를 표시.
correct_predictions = np.sum(y_pred == y_test)
test_accuracy = correct_predictions / len(y_test)
# 오분류율 계산
misclassification = 1 - test_accuracy
# 혼동 행렬(cm) 계산(검증용): 각 클래스를 얼마나 정확하게 분류하는지 분석. 실제 클래스(y_test[i])와 예측 클래스(y_pred[i])를 비교하여 각각 조합에 속하는 데이터 포인트 수를 누적.
num_classes = len(classes)
cm = np.zeros((num_classes, num_classes), dtype=int)
for i in range(len(y_test)):
cm[y_test[i], y_pred[i]] += 1
# 정밀도, 재현율, F1 점수 계산(검증용): 혼동 행렬 사용하여 분류 모델 성능 평가 지표.
# 정밀도(Precision): 모델이 양성 클래스로 예측한 경우 중 실제로 양성인 비율을 표시.
precision = np.sum(np.diag(cm) / np.sum(cm, axis=1)) / num_classes
# 재현율 (Recall): 재현율은 실제 양성 클래스 중 모델이 양성 클래스로 예측한 비율을 표시.
recall = np.sum(np.diag(cm) / np.sum(cm, axis=0)) / num_classes
# F1 점수 (F1 Score): F1 점수는 정밀도와 재현율의 조화 평균. 정밀도와 재현율 간의 균형 제공.
f1 = 2 * (precision * recall) / (precision + recall)
# 결과를 한글로 result 딕셔너리에 저장
result = {'K': k, '분류율': test_accuracy, '오분류율': misclassification,
'정밀도': precision, '재현율': recall, 'F1 점수': f1}
results.append(result)
return pd.DataFrame(results)
# 7. 과제에 주어진 K 값들 정의
k_values = [5, 10, 20, 30]
# KNN 모델 학습 결과 저장 (학습 데이터)
train_results = knn_model(train_data, train_data, k_values)
# 8. K값별 학습 데이터 결과 및 검증 결과 출력 (결과 수치를 %로 변환)
train_results['분류율'] = (train_results['분류율'] * 100).round(1).astype(str) + '%'
train_results['오분류율'] = (train_results['오분류율'] * 100).round(1).astype(str) + '%'
train_results['정밀도'] = (train_results['정밀도'] * 100).round(1).astype(str) + '%'
train_results['재현율'] = (train_results['재현율'] * 100).round(1).astype(str) + '%'
train_results['F1 점수'] = (train_results['F1 점수'] * 100).round(1).astype(str) + '%'
# K값별 학습 데이터 결과 및 검증 결과 출력
print("")
print("1) 학습 데이터 결과표")
print(train_results.to_string(index=False, justify='left')) # 첫 열(행번호) 제거
# KNN 모델 학습 및 평가 (테스트 데이터)
test_results = knn_model(train_data, test_data, k_values)
# K값별 테스트 데이터 결과 및 검증 결과 출력 (결과 수치를 %로 변환)
test_results['분류율'] = (test_results['분류율'] * 100).round(1).astype(str) + '%'
test_results['오분류율'] = (test_results['오분류율'] * 100).round(1).astype(str) + '%'
test_results['정밀도'] = (test_results['정밀도'] * 100).round(1).astype(str) + '%'
test_results['재현율'] = (test_results['재현율'] * 100).round(1).astype(str) + '%'
test_results['F1 점수'] = (test_results['F1 점수'] * 100).round(1).astype(str) + '%'
# K값별 테스트 데이터 결과 및 검증 결과 출력
print("")
print("2) 테스트 데이터 결과표")
print(test_results.to_string(index=False, justify='left')) # 첫 열(행번호) 제거
# 9. K 값의 최적값 찾기
best_k_train = train_results[train_results['오분류율'] == train_results['오분류율'].min()]['K'].values[0]
# 동일한 K 값으로 테스트 데이터에서 모델 평가
test_results2 = knn_model(train_data, test_data, [best_k_train])
# 최적 K값과 테스트 데이터 결과 출력 (결과 수치를 %로 변환)
test_results2['분류율'] = (test_results2['분류율'] * 100).round(1).astype(str) + '%'
test_results2['오분류율'] = (test_results2['오분류율'] * 100).round(1).astype(str) + '%'
test_results2['정밀도'] = (test_results2['정밀도'] * 100).round(1).astype(str) + '%'
test_results2['재현율'] = (test_results2['재현율'] * 100).round(1).astype(str) + '%'
test_results2['F1 점수'] = (test_results2['F1 점수'] * 100).round(1).astype(str) + '%'
# 9. 최적 K값과 테스트 데이터 결과 출력
print("")
print("3) K 최적값의 테스트 데이터 분류율 및 검증 데이터")
print(test_results2.to_string(index=False, justify='left')) # 첫 열(행번호) 제거
# 테스트 데이터 결과표에서 최적 K 값에 해당하는 행을 추출
best_k_test_results = test_results2[test_results2['K'] == best_k_train]
# K 값의 최적값 찾기 (테스트 데이터에서)
best_k_test = test_results2[test_results2['오분류율'] == test_results2['오분류율'].min()]['K'].values[0]
# 10. 오분류율 비교 그래프 그리기
plt.figure()
plt.plot(k_values, test_results['오분류율'], marker='o', label='테스트 데이터 오분류율')
plt.plot(k_values, train_results['오분류율'], marker='o', label='학습 데이터 오분류율')
plt.plot([best_k_train], test_results2['오분류율'], marker='x', label=f'최적 K값({best_k_train})의 테스트 데이터 오분류율')
plt.xlabel('K 값')
plt.ylabel('오분류율')
plt.title('4) K값별 오분류율과 최적 K값 그래프')
plt.legend()
plt.show()