머신러닝 책

Books

Algorithms of the Intelligent Web 2009

『Algorithms of the Intelligent Web』 챕터 1의 전체 노트 중 몇 가지만 따로 정리한다.

  • Inference does not happen instantaneously. 추론은 순식간에 되지 않는다. 모든 데이타셋/알고리즘이 응답 시간 제한내에서 실행될 것이라고 가정하면 안된다.
  • Size matters!
  • Different algorithms have different scaling characteristics. Some algorithms are scalable, and others aren’t. 수십억 개의 뉴스 중에서 유사한 제목의 뉴스 그룹을 찾는다고 가정해보자. Not all clustering algorithms can run in parallel. 경우에 따라서는 데이타 자체를 분할해야 할 수 있다.
  • Everything is not a nail! 모든 문제에 통용되는 만능 알고리즘은 없다. 이 책의 저자는 Pedro Domingos의 2012년 ACM 논문을 참고 했고, 그는 『Master Algorithms』 이라는 만능 알고리즘이 존재할 것이라는 책을 쓰긴 했지만.
  • Human intuition is problematic. 직관하기 어려운 고차원에서 다변량 가우스 분포multivariate Gaussian distribution의 대부분은 평균 근처에 있지 않고 바깥shell에 있다. 낮은 차원에서 간단한 분류자를 만드는 것은 쉽지만 차원 수를 늘리면 어떤 일이 일어나는지 이해하기 어렵다.
  • “garbage in, garbage out.”
  • Learn many different models. 넷플릭스 프라이즈의 우승자는 100개 이상의 학습기를 앙상블로 구축했다고 한다.

(Algorithms of the Intelligent Web, 2016) - Chapter 2부터 다시 읽어야 한다, 2017년 12월

마스터 알고리즘 2015, 2016

머신러닝 다섯 종족

왼쪽 Sebastian Raschka의 정리와 오른쪽은 내가 직접 책에서 촬영했다.

합리주의자 The rationalist는 첫 행동을 개시하기 전에 모든 것을 계획한다. 경험주의자 The empiricist는 여러가지 시도를 해보고 결과가 어떻게 나오는지 확인한다. david hume은 가장 위대한 경험주의자이며 역사상 가장 위대한 18세기 철학자다. p.114

퍼셉트론의 역사에 나타난 역설적인 사건들 중에서 가장 슬픈 일은 프랭크 로젠블랫이 1969년 체사피크 만에서 보트 사고를 당해 자기 창조물의 둘째 장(민스키가 아니라 자신이 옳았다는)을 보지 못하고 죽은 사건일 것이다. p.194

구글의 연구 부서장인 피터 노빅이 언젠가 나에게 나이브 베이즈 분류기는 구글에서 가장 널리 쓰이는 머신러닝이고 구글이 하는 일의 구석구석에 머신러닝이 적용된다고 말했다. p.252

SVM은 퍼셉트론의 일반형으로도 볼 수 있는데, 유형을 나누는 초평면의 경계는 특별한 유사성 측정(벡터 사이의 내적dot product. numpy도 .dot 사용)을 사용할 때 얻는 것이기 때문이다. 하지만 SVM은 다층 퍼셉트론과 비교하여 중요한 장점이 있었다. 가중치에는 국부 최적값이 많지 않고 단일한 최적값이 있으므로the weights have a single optimum instead of many local ones 신뢰성 있게 가중치를 찾기가 훨씬 더 쉽다. 이런 장점이 있으면서도 SVM의 비용은 다름 아닌 다층 퍼셉트론의 비용과 같았다. 서포트 벡터들은 실제적으로 하나의 은닉층처럼 작동하고 벡터들의 가중 평균은 출력 층처럼 작동한다. p.317

나이브 베이즈 분류기가 단 하나의 단어만 알아보는 문서에 대하여 그 단어가 학습 데이터에서는 우연히 스포츠에 관한 문서에만 있었다면, 나이브 베이즈 분류기는 그 단어를 포함한 문서를 모두 스포츠에 관한 문서로 착각하기 시작한다. 하지만 마진 최대화 방식 덕택에 SVM은 차원이 매우 높을 때조차도 과적합 문제에서 벗어날 수 있다. p.318

기계는 어떻게 생각하는가? 2018, 2019

넷플릭스 프라이즈와 인공 지능

벨코의 기본 모델은 사용자 전체를 대상으로 놓고 보면 그럴 듯 했지만 훌륭하다고는 할 수 없었다. 이는 단일 모델이 모든 사람에게 적용될 수 없다는 사실을 보여준다. 미국 공군은 1950년대에 발생한 수많은 항공기 사고를 조사하면서 이와 동일한 현상을 발견했다. 1920년대부터 항공기 조종석은 미국인 남성의 평균 체형에 맞추어 제작했다. 이 문제를 연구했던 길버트 대니얼스Gilbert Daniels 중위는 미국인 남성 대부분의 체형이 평균에 가깝지 않다는 것을 발견했다. 토드 로즈 Todd Rose는 『평균의 종말』이라는 책에서 이러한 상황을 다음과 같이 설명했다.

조종사 4,063명의 신체 치수 10개 항목을 측정해 평균을 구했으나 조종사 중 모든 신체 치수가 이 10개 항목의 평균 범위에 들어가는 조종사는 한 명도 없었다. 어떤 조종사의 팔은 평균 보다 길지만 다리는 평균보다 짧았다. 어떤 조종사는 가슴둘레가 컸지만 엉덩이가 작았다. 놀랍게도 대니얼스는 10개의 치수 중 세 개(목둘레, 허벅지 둘레, 손목 둘레)만 선택한 경우조차 조종사의 3.5% 이하만 평균 범위에 들어간다는 사실을 발견했다. 대니얼스의 발견이 시사하는 바는 명확했다. 평균 체형의 조종사는 존재하지 않는다. 조종사의 평균 체형에 맞추어 설계한 조종석은 어떤 조종사의 체형에도 맞지 않는다.

이 발견을 토대로 대니얼스는 조종사가 자신의 체형에 맞게 조절할 수 있는 조종석을 제안했으며 공군을 이를 수용했다. 공군은 평균을 표준으로 삼는 방식을 포기함으로써 개인형 맞춤이라는 새로운 원칙을 제시했다. p.119

‘터미네이터 효과’를 잡아낼 수 있어야 했다. 터미네이터 효과란, 넷플릭스 사용자 중에는 SF와 액션 영화를 좋아하는 그룹이 있고, 어린이 영화를 좋아하는 그룹이 있고, 이 두 그룹 모두에 포함되는 사용자도 있고, 이 두 그룹에 포함되지 않는 사용자도 있는 상황을 설명하는 것이다. 터미네이터 효과를 해결하기 위해 참가자들은 대부분 행렬 인수 분해라는 방식을 사용했다. p.120

행렬 인수 분해 matirx factorization

행렬 인수 분해는 거대한 행렬이 중복된 정보를 많이 갖고 있다는 사실을 기반으로 한다.

‘쥬라기 공원’이 각 장르에 해당하는지를 나타내는 숫자에 스티븐 스필버그가 각 장르를 얼마나 좋아하는지 나타내는 숫자를 곱한 뒤, 이 숫자들을 모두 합산하여 스필버그가 ‘쥬라기 공원’을 얼마나 좋아하는지를 나타내는 점수를 구한다. p.122

지금 살펴본 방법이 행렬 인수 분해다. 이 알고리즘은 개인화된 추천 기능을 만들기 위해 살펴볼 만한 가장 중요한 알고리즘이며 꼭 습득해야 하는 핵심 개념이다. 이 알고리즘에 행렬 인수 분해라는 이름이 붙은 이유는, 영화와 사용자에 대한 정보를 나타내는 숫자가 담긴 두 개 이상의 행렬(인수)을 곱해 위위 이미지 처럼 거대한 평점 행렬과 같은 원시 데이터를 만들어 그 데이터로부터 근사치를 계산하는 방식이기 때문이다. p.123

대회가 열렸던 첫해부터 널리 쓰인 모델은 ML@UToronto 팀의 연구원들이 개발한 인공 신경망이었다. 이 신경망은 수학적으로 행렬 인수 분해와 매우 유사했지만 존재하지 않는 평점 처리를 다른 방식으로 했으며, 평점을 1.0과 5.0 사이의 실수 대신에 1, 2, 3, 4, 5라는 다섯 개의 불연속적인 범주로 취급했다. p.134

시간에 따른 평점 예측

넷플릭스 프라이즈가 열린 두 번째 해에 참여한 팀들은 사용자가 ‘언제’ 영화에 평점을 매겼는지도 주목하기 시작했다. p.135

넷플릭스 프라이즈의 데이터는 데이터 마이닝의 보물 창고 였다. 한 가지 사례를 더 들면, 빅카오스 팀은 영화 제목에 숫자가 포함되어 있는지 여부로 사용자의 호감을 예측할 수 있다는 것을 발견했다(효과는 미미했지만 이러한 현상이 분명히 존재했다). p.138

목차

  • 자율 주행차와 인공 지능
  • 넷플릭스 프라이즈와 인공 지능
  • 강화 학습과 심층 신경망
    전반부는 딥마인드와 아타리 강화학습을 얘기한다.
    • 인공 신경망이 보는 세상
      CNN으로 이미지를 인식
    • 심층 신경망의 내부 구조
      CNN 내부 구조를 딥드림으로 변형하는 예제
  • 세상과 소통하는 인공 지능
    • 음성 인식, LSTM
    • 자연어 이해, QA 태스크 소개
  • 게임과 인공 지능

단단한 머신러닝 2016, 2020

중국어 제목: 机器学习
이 책은 2016년 1월에 출판되었고, 초판 5,000부가 일주일 만에 모두 팔렸습니다. 이후 8개월 동안 9쇄를 거듭하며 72,000부가 팔렸다. 현재 50만부가 넘게 팔림.

연습문제 4.3 정보 엔트로피에 기반하여 분할 선택을 진행하는 의사결정 트리 알고리즘에 대한 코드를 작성하고, 표 4.3의 데이터를 사용해 의사결정 트리를 생성하라. p.115

(표 4.3인데 4.4로 잘못 표기되어 있음)

4.7 그림 4.2는 재귀 알고리즘이다. 만약 매우 큰 데이터를 만나게 되면 의사결정 트리의 층수가 매우 깊어져, 재귀 방법을 사용하면 스택이 넘치기 쉽다. FIFO 데이터 구조를 사용하고 파라미터 MaxDepth로 트리의 최대 깊이를 제어할 수 있게 만들면서, 그림 4.2와 같은 값을 가지지만 재귀적 의사결정 트리 생성 알고리즘을 사용하지 않는 알고리즘을 작성해보라. (반복 구조로 구현하라는 얘기같다.)

4.8 DFS 과정을 BFS 과정으로 수정하고, 파라미터 MaxNode로 트리의 최대 노드 수를 제어하는 의사결정 트리 알고리즘을 문제 4.7을 기반으로 수정하라. 문제 4.7의 알고리즘과 비교했을때 어떤 것이 메모리 관리에 쉬운지 분석하라.

5.1 선형 함수 \(f(x)=w^{T}x\)를 신경망 활성화 함수로 사용했을 때의 결함에 대해 설명하라.

6.4 선형 판별분석과 선형 커널 서포트 벡터 머신이 어떤 조건에서 같은지 논의하라.

6.6 SVM이 노이즈에 대해 민감한 이유를 설명하라.

6.9 커널 트릭을 로지스틱 회귀로 확장하여 사용하라. (커널 로지스틱 회귀를 만들어라)

6.10 SVM의 서포트 벡터의 숫자를 확연히 줄이면서 일반화 성능은 많이 떨어지지 않는 방법에 대해 설명하라.

8.4 GradientBoosting과 AdaBoost의 차이를 분석하고 설명하라.

8.5 배깅에 대한 코드를 작성하라.

8.6 배깅이 (일반적으로) 나이브 베이즈 분류기의 성능을 높일 수 없는 이유를 분석하고 설명하라.

8.7 랜덤 포레스트가 왜 의사결정 트리 배깅 앙상블의 훈련 속도보다 빠른지 설명하라.

14.5 CRF와 로그 회귀(Logistic Regression?)를 비교하고 차이점을 설명하라.

Last Modified: 2020/11/06 10:25:54


2020 Book Reports  ·  통계학 책  ·  인공지능 책  ·  2017 Book Reports  ·  2018 Book Reports  ·  2019 Book Reports  ·  통계학 응용  ·  Template  ·  AWS Personalize  ·  통계학  ·  Project Management  ·  인공지능  ·  머신러닝  ·  TensorRT  ·  Cryptography  ·  이산수학  ·  PyData  ·  BigQuery  ·  Flask  ·  Docker  ·  GCP  ·  비지니스 책  ·  비지니스  ·  강화학습  ·  머신러닝 책  ·  Markov Decision Process  ·  Santander Product Recommendation  ·  Java  ·  Android Development  ·  Kubernetes  ·  Zsh  ·  Software Deployment  ·  AI Platform  ·  GCS  ·  XGBoost  ·  Deno  ·  JetBrains  ·  수식  ·  GPU Data Science  ·  Python  ·  Front-End  ·  Activation, Cost Functions  ·  알고리즘  ·  자료구조  ·  AWS  ·  NLP 링크  ·  알고리즘 링크  ·  머신러닝 링크  ·  사회심리학  ·  Information Retrieval  ·  OOP  ·  데이터 사이언스  ·  진화생물학  ·  수학  ·  미래학  ·  LifeHacks  ·  C++  ·  Decision Tree  ·  NLP  ·  Hadoop, Spark  ·  데이터 마이닝  ·  CNN, RNN  ·  운영체제  ·  머신러닝 분류기  ·  거리  ·  Support Vector Machine  ·  OAuth 2.0  ·  Naive Bayes  ·  컴파일러  ·  딥러닝  ·  Word Embedding  ·  컴퓨터시스템구조  ·  영어  ·  Go  ·  Scikit Learn  ·  NLP 실험  ·  MySQL  ·  Keras
is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.