본문 바로가기

인공지능

(24)
(17) 심층 신경망 심층 신경망을 학습하게 되면 다양한 문제가 존재하게 됩니다. 오늘은 그중에 그래디언트 소실, 폭주 그리고 과대적합 문제에 대해서 다뤄보도록 하겠습니다. 그래디언트 소실은 역전파 과정에서 하위층에 있는 뉴런들에 전해지는 loss는 적어, 일찍 수렴해버리는 문제입니다. 그리고 그래디언트 폭주는 그래디언트 소실과 반대로 하위층에 있는 뉴런들에 전해지는 loss가 너무 커져버리는 문제입니다. 이런 문제들을 해결하기 위해 가중치 초기화 방법을 바꾸거나, 새로운 활성화 함수를 이용합니다. 또는 배치 정규화를 이용합니다. 그래디언트 클리핑으로 폭주문제를 해결할 수도 있습니다. 오늘은 앞서 말씀드린 문제들을 해결하는 총 6가지 방법에 대해 알아보겠습니다. 먼저 새로운 가중치 초기화 방법에 대해 말씀드리겠습니다. (이번..
(16) 인공 신경망 이제부터는 딥러닝에 대해서 알아보도록 하겠습니다. 이번 글에서는 딥러닝에 대한 기초에 대해서 알아볼 것입니다. 퍼셉트론은 아주 간단한 인공 신경망 구조입니다. 입력층과 출력층만 존재하여 두개의 층으로 이루어져 있습니다. 퍼셉트론은 각 노드가 그 다음 노드에 전부 연결되어 있는 밀집층입니다. 각 노드에서 다음 노드로 wx + b의 값을 넘겨줍니다. 여기서 x는 입력층에 들어온 값들의 행렬이고, w는 가중치 행렬입니다. b는 편향 특성입니다. 그리고 출력층에서는 활성화 함수(퍼셉트론에서는 계단함수입니다.)를 거쳐 최종 결과를 도출해냅니다. 인공신경망은 초창기 때 지금처럼의 인기를 얻을 수 없었습니다. 그에 따른 이유도 있었겠지요. 두개의 층으로만 이루어진 인공신경망으로는 그 당시 다른 머신러닝들의 성능에 비..
(15) 비지도학습 지금까지는 입력특성과 레이블이 같이 주어지는 지도학습에 대해서 알아보았습니다. 이번 글에서는 비지도학습의 대표적 알고리즘인 K-means와 DBSCAN에 대해서 알아보도록 하겠습니다. 먼저 K-means 알고리즘에 대해서 알아보도록 하겠습니다. K-means는 centroid라는 클러스터의 중심점을 이용하여 군집화합니다. 과정은 아주 간단합니다. 1. k개 만큼의 centroid를 정의하고, 각 데이터셋은 가장 가까운 centroid에 해당하는 레이블을 가지게 됩니다. 2. centroid를 각 레이블을 가진 데이터셋의 중심으로 정의합니다. 위 과정을 더 이상 centroid가 변경되지 않을때까지 반복합니다. 처음 centroid를 정의하는 데에는 크게 세가지 방법이 존재합니다. 1. 랜덤하게 정의합니다..
(14) 차원 축소 PCA 인공지능을 개발하다보면 차원이 아주 많은 데이터셋을 볼 수 있을 것입니다. 차원을 높을 때의 단점은 다음과 같습니다. - 직관적 통계인 시각화를 하기 힘듭니다. (3차원까지만 가능하기 때문.) - 모델이 과대적합되기 쉽습니다. (입력 특성이 아주 많기 때문. 모델의 복잡도 상승.) - 학습 시간이 오래 걸리게 됩니다. (데이터셋의 크기가 높아지기 때문.) . . 이렇게 차원이 높으면 좋지 않은 점들이 존재합니다. 높은 차원을 최대한 정보를 손실하지 않으면서 저차원으로 변환하는 알고리즘이 있다면 이를 어느정도 해결할 수 있습니다. PCA 알고리즘은 대표적인 차원축소 알고리즘입니다. PCA 알고리즘은 데이터셋을 알맞은 초평면에 투영시켜 저차원으로 차원축소를 진행해줍니다. 이 알고리즘은 원래 데이터셋의 분산을..
(13) 앙상블 오늘은 앙상블 기법에 대해서 알아보도록 하겠습니다. 앙상블은 여러개의 예측기를 이용하여 더 좋은 예측기를 만들어 내는 것입니다. 앙상블 기법중에서는 크게 배깅, 부스팅, 스태킹이 있습니다. 가장 먼저 배깅에 대해서 알아보도록 하겠습니다. 배깅은 같은 알고리즘의 모델을 데이터셋을 샘플링하여 각자 다른 데이터셋으로 학습하는 것입니다. 1번 모델은 1~1000 데이터셋 샘플로 학습하고, 2번 모델은 750~1750 데이터셋 샘플로 학습하고 . . 이렇게 여러개의 모델을 학습시킵니다. 그 후에 예측을 할 때에는 각 모델들이 분류한 클래스들을 모으고, 가장 많이 예측된 클래스를 최종 예측 클래스로 정하게 됩니다. 여기서 각 모델에서 학습할때 선택되지 않은 데이터셋을 oob 샘플이라고 하고, 이와 같이 정확도를 측..
(12) 결정 트리 저번 글과 비슷하게 이번 글에서는 분류와 회귀 모두 가능한 결정 트리(decision tree)에 대해서 알아보도록 하겠습니다. 결정 트리는 root node 와 그의 자식 노드, 그리고 자식노드가 없는 노드인 leaf node로 나뉘어져 있습니다. 하나의 노드는 두개의 노드를 가질 수 있습니다. leaf node를 제외한 노드들은 훈련데이터의 샘플에 임곗값을 정하여 두개로 나누고 있습니다. 예를 들어 위의 그림에서 맨 위 층의 노드인 root node에서 width가 1이라면 오른쪽 밑으로 가게 됩니다. samples는 각 노드로 분류된 모든 샘플의 개수입니다. value는 분류된 샘플의 각 클래스의 개수입니다. class는 그 노드에서의 예측값입니다. gini는 불순도를 체크하는 방법중에 하나입니다...
(11) SVM SVM(Support Vector Machine)은 분류나 회귀, 이상치 탐색까지 활용 가능한 인기있는 머신러닝 모델입니다. 이번 글에서는 SVM 분류, SVM 회귀에 대해서 알아보도록 하겠습니다. 먼저 SVM 분류에 대해서 알아보도록 하겠습니다. SVM분류도 선형 SVM분류와 비선형 SVM분류로 구분됩니다. 선형 SVM 분류기는 두 클래스를 나누면서 제일 가까운 훈련 샘플로부터 가능한 가장 멀리 떨어져있으려고 합니다. 검정색 실선은 도로의 경계입니다. 빨간색 실선과 가장 가까운 데이터들과의 거리는 마진(margin)입니다. 빨간색 실선, 즉 선형 SVM 분류기는 도로의 경계에 걸쳐져 있는 훈련샘플에게만 영향을 받습니다. 그리고 도로의 경계에 걸쳐져 있는 훈련샘플들을 Support Vector라고 합니다..
(8) 선형회귀 과대적합/과소적합 훈련세트에서는 좋은 결과를 내지만, 검증세트에서는 좋은 결과를 내지 못하는 모델을 흔히 과대적합된 모델이라고 표현합니다. 그리고 훈련세트와 검증세트 둘 모두에서 좋은 결과를 내지 못하는 모델을 과소적합이라고 부릅니다. 선형회귀에서 과대적합과 과소적합을 어떻게 발견하고, 해결할 수 있을까요 먼저 과대적합과 과소적합을 발견하는 방법을 말씀드리겠습니다. 가장 간단하게는 실제 데이터와 훈련한 모델을 시각화하여 살펴보는 것입니다. 수치적으로는 학습곡선으로 알아볼 수 있습니다. 학습곡선은 훈련세트의 크기나 epoch을 x축으로 하고 각 loss를 y축으로 하여 검증세트와 학습세트에 한해서 시각화해보는 것입니다. 과소적합의 학습 곡선은 학습셋과 검증셋의 간격이 좁고, 둘 모두 Loss가 높습니다. 과소적합은 모델의 ..