머신 러닝

    [머신 러닝] 다층 퍼셉트론

    다층 퍼셉트론과 역전파 다층 퍼셉트론은 입력층 하나와 은닉층이라 불리는 하나 이상의 TLU 층과 출력층으로 구성됩니다. 입력층과 가까운 층을 하위 층, 출력층에 가까운 층을 상위 층이라 부릅니다. 출력층을 제외하고 모든 층은 편향 뉴런을 포함하며 다음 층과 완전히 연결돼 있습니다. 은닉층을 여러 개 쌓아 올린 인공 신경망을 심층 신경망(deep neural network, DNN)이라고 합니다. 딥러닝은 심층 신경망을 연구하는 분야이며 조금 더 일반적으로는 연산이 연속하여 길게 연결된 모델을 연구합니다. 다층 퍼셉트론을 훈련할 방법을 찾는 연구가 긴 시간 지속되다가 데이비드 루멜하트, 제프리 힌턴, 로날드 윌리엄스가 역전파 훈련 알고리즘을 소개했습니다. 이 알고리즘은 효율적 기법으로 그레이디언트를 자동으..

    [머신 러닝] 서포트 벡터 머신 (support vector machine)

    서포트 벡터 머신이란? 서포트 벡터 머신(SVM)은 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델입니다. 서포트 벡터 머신 모델은 가장 인기 있는 모델에 속합니다. 이 모델은 특히 복잡한 분류 모델에 잘 들어맞으면 중간 크기의 데이터셋에 적합합니다. 선형 SVM 분류 SVM의 기본 아이디어는 그림으로 설명하는 것이 가장 좋습니다. 그림을 보며 설명하겠습니다. 위 그림에서 H3는 클래스를 올바르게 분류하고 있지 않습니다. H1과 H2는 클래스를 올바르게 분류하는데, H1은 결정 경계가 샘플에 너무 가까워 새로운 샘플에 대해서는 잘 작동하기 힘듭니다. H2는 결정 경계가 샘플과 멀리 떨어져있어 새로운 샘플에 대해 상대적으로 더 잘 작동할 것입니다. 여기 있..

    [머신 러닝] 경사 하강법 (Gradient descent)

    앞서 선형 회귀를 다룰 때 경사 하강법을 간단하게 설명한 적이 있는데, 경사 하강법은 많은 머신 러닝 및 딥러닝 알고리즘에 사용되므로 좀 더 자세히 설명하고 넘어가겠습니다. 데이터 준비 HTML 삽입 미리보기할 수 없는 소스 배치 경사 하강법 경사 하강법을 구현하려면 각 모델 파라미터에 대해 비용 함수의 그레이디언트를 계산해야 합니다. 다시 말해서, 모델 파라미터가 조금 변경될 때 비용 함수가 얼마나 바뀌는지를 계산해야 합니다. 배치 경사 하강법에서는 매 경사 하강법 스텝에서 전체 훈련 세트에 대해 계산합니다. 그래서 이 알고리즘을 배치 경사 하강법이라고 합니다. 매 스텝에서 훈련 데이터 전체를 사용하기 때문에 매우 큰 훈련 세트에서는 아주 느립니다. 이 알고리즘을 간단하게 구현해보겠습니다. HTML 삽..

    [머신 러닝] 분류 (Classification)

    MNIST 불러오기 이번 포스트에서는 고등학생과 미국 인구조사국 직원들이 쓴 70,000개의 작은 숫자 이미지를 모은 MNIST 데이터셋을 사용하겠습니다. sklearn으로 MNIST를 불러오는 코드입니다. HTML 삽입 미리보기할 수 없는 소스 이진 분류기 훈련 문제를 단순화해서 모든 숫자가 5인지 아닌지만 분류해보겠습니다. 이 분류기는 '5'와 '5 아님'의 두 가지 클래스를 구분할 수 있는 이진 분류기(binary classifier)의 한 예입니다. HTML 삽입 미리보기할 수 없는 소스 성능 측정 분류기 평가는 회귀 모델보다 훨씬 어렵기 때문에 조금 길게 설명하도록 하겠습니다. HTML 삽입 미리보기할 수 없는 소스 다중 분류 여태 다룬 이진 분류는 두 개의 클래스를 구별하는 반면 다중 분류기(..

    [머신 러닝] 간단한 머신 러닝 프로젝트 해보기

    동기 지금 Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow로 공부하고 있는데, chapter 2에서 간단한 머신 러닝 프로젝트를 해볼 수 있는 내용이 있어서 따라해보려고 합니다. 데이터 설명 이 프로젝트는 StatLib 저장소에 있는 캘리포니아 주택 가격 데이터셋을 사용합니다. 이 데이터는 캘리포니아의 블록 그룹마다 인구, 중간 소득, 중간 주택 가격 등을 담고 있습니다. 목표 이 데이터로 모델을 학습시켜서 다른 측정 데이터가 주어졌을 때 구역의 중간 주택 가격을 예측해야 합니다. 문제 정의 먼저 문제를 정의해야 합니다. 우리에게는 레이블된 훈련 샘플이 있으니 지도 학습이고, 값을 예측해야 하고 예측에 사용할 특성이 여러개이므로 다중 회귀..

    [머신 러닝] 행렬 인수분해 (Matrix Factorization)

    행렬 인수분해 사람들의 각 항목에 대한 기호 정보가 있는 행렬이 있을 때, 이 행렬은 두 개의 행렬의 곱으로 나타낼 수 있습니다. 이를 이용한 예측이 가능한데, 예를 들어서 아래와 같이 몇 칸이 비어있는 행렬이 있다고 하겠습니다. 항목 1 항목 2 항목 3 사람 1 4 1 5 사람 2 2 ? 3 사람 3 ? 3 1 몇 칸이 비어있기 때문에 곱했을 때 완벽히 똑같은 두 개의 행렬은 구하기 힘들 수도 있습니다. 따라서 이 행렬을 인수분해해서 곱했을 때 가장 가까운 두 개의 행렬의 곱으로 나타낸다면, 두 행렬의 곱으로 빈 칸의 값을 예측할 수 있습니다. 속성 학습 여기서 속성을 학습할 때에도 경사 하강법을 이용합니다. 먼저 두 행렬에 임의의 값을 넣고 곱해서 목표 행렬과 얼마나 차이가 나는지 구합니다. 여기서..

    [머신 러닝] 협업 필터링 (collaborative filtering)

    협업 필터링 협업 필터링은 많은 사용자들로부터 얻은 기호 정보(taste information)에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법입니다. 예를 들어, 아래와 같은 데이터가 있고, 혜린이의 항목 4에 대한 기호 정보를 알고 싶다고 하겠습니다. 이름 항목 1 항목 2 항목 3 항목 4 지원 4 3 4 4 혜린 4 3 5 ? 이 경우에 혜린이의 항목1, 2, 3에 대한 기호 정보가 지원이와 유사하기 때문에 혜린이는 지원이와 비슷하다고 할 수 있고, 따라서 혜린이가 항목 4에 높은 점수를 줄 것이라 예측할 수 있습니다. 실제로는 데이터가 훨씬 많을 경우를 다루게 될 텐데 예를 들어 혜린이와 항목 1, 2, 3이 비슷한 사람이 1000명 있다면 그 1000명의 항목 4에 대한 평균을 혜..

    [머신 러닝] 에이다 부스트 (AdaBoost)

    Boosting 부스팅은 또다른 앙상블 기법입니다. 부스팅 역시 앙상블 기법이므로 여러 개의 모델을 씁니다. 부스팅은 일부러 성능이 안좋은 모델들을 사용합니다. Bagging과 마찬가지로 각 모델이 조금 다른 데이터를 써서 학습하는데, Bootstrap처럼 데이터를 임의로 만드는 게 아니라 먼저 만든 모델들이 어떻게 예측을 했냐에 따라 뒤에 만드는 데이터 셋이 결정됩니다. 또한, 모델들의 예측을 종합할 때 단순히 투표를 하는 게 아니라 성능이 좋은 모델의 예측을 더 반영합니다. 에다 부스트 (Adaboost) 에다 부스트에서도 수많은 결정 트리들을 만듭니다. 에다 부스트에서는 깊은 결정 트리가 아니라 루트 노드 하나와 분류 노드 두 개를 갖는 얕은 결정 트리를 사용합니다. 이런 식으로 하나의 질문과 그 ..