머신 러닝

지금까지 살펴본 대부분의 머신러닝은 타겟을 예측하는 방법에 대한 내용이었다.이런 종류의 학습을 discriminative learning이라고 하는데 classifier(분류기)나 regressor(회귀기?) 모두 discriminative learning의 한 종류이다.그리고 이런 종류의 학습은 모두 정답이나 레이블이 제공되는 지도학습(supervised learning)이라고 불린다. 하지만 머신 러닝에는 데이터의 레이블이 없이 학습을 하는 비지도 학습(Unsupervised learning)도 있다.오늘 살펴볼 GAN(Generative Adversarial Network)은 비지도 학습에 혁명을 일으킨 신경망이다.2014년 Ian Goodfellow가 소개한 GAN은 두 개의 신경망을 동시에 훈련..
지난 번에 RNN을 살펴보았다. RNN(Recurrent Neural Network)은 한 단계의 출력이 다음 단계의 입력으로 피드백 되어 순차적 데이터를 처리합니다.이를 통해 RNN은 보통 시계열 데이터의 시간적 특징을 파악하고 과거 컨텍스트를 기반으로 출력을 뱉는다.하지만 RNN은 이전 입력에 대한 중요한 정보를 쉽게 잊어버릴 수 있다는 단점을 가지고 있다. 이번 포스팅에서는 이런 RNN을 대신할 LSTM(Long Short-Term Memory)에 대해 알아보자. LSTM에 대한 아주 디테일한 내용과 수학이 궁금하다면 https://blog.floydhub.com/long-short-term-memory-from-zero-to-hero-with-pytorch/을 방문해보자.LSTM 개요LSTM(Lo..
본 블로그의 Machine Learning 카테고리에서는 주로 이미지를 처리하는 내용을 다루었다.각각의 이미지 데이터는 하나의 독립적인 데이터였다.하지만 이런 패러다임에 맞지 않는 데이터는 어떻게 처리할 수 있을지 생각해보자.텍스트로 이루어진 문장은 짧거나 길어질 수도 있고, 그 사이의 단어는 문맥이나 의미를 바꿀 수 있다.자율 주행 자동차가 인식하는 주변 환경에 대한 비디오는 다른 자동차나 사람의 궤적을 찾고 예측해야 한다.이때 시퀀스(sqeuences)라는 개념이 등장한다.SequencesSequences(시퀀스)는 특정 순서로 배열된 데이터 포인트 집합을 말한다.말이 어렵지 사실 자연어 처리에서 시퀀스의 개념을 간단히 이해할 수 있다.자연어 처리에서 시퀀스는 문장이나 단락이다.이때 각 단어가 데이터..
최신, 최첨단의 심층 네트워크를 만들어 써먹으려면 수일 혹은 수주일이 걸릴 수 있으며 수백만 개의 데이터가 필요하다.예를 들어, ILSVRC ImageNet 2010에는 1000개의 카테고리가 있으며 각 카테고리마다 1000개가 넘는 고해상도 테스트 이미지도 있다.모든 사람들이 처음부터 모델을 만들어 위와 같은 데이터를 분류하는 네트워크를 잘 훈련시키기에는 수많은 데이터가 필요하다.이에 더해 최신 장비도 필요하고 시간도 많이 필요한 등 새로운 네트워크를 처음부터 훈련시키는 것은 매우 고된 작업이 될 것이다.이런 에로사항 때문에 Transfer Learning(전이 학습)이 등장한다.Transfer LearningTransfer Learning이란 방대한 양의 데이터를 가지고 미리 잘 훈련된 모델을 가져와..
기존 네트워크의 한계 및 Residual Network의 등장기존에 우리가 살펴본 머신 러닝 모델에는 여러 레이어를 배열해서 데이터가 그 레이어들을 통과하도록 설계하였다.하지만 이런 모델은 레이어의 깊이가 깊어질수록 몇 가지 문제가 발생한다.위의 예를 살펴보자. (출처: https://arxiv.org/abs/1512.03385)20개 및 56개의 레이어가 있는 vgg 스타일의 네트워크에 대한 트레이닝 커브를 보자.56개의 레이어가 있는 모델은 capacity가 더 큼에도 불구하고 20 레이어보다 나쁜 성능을 보여주고 있다.이것은 네트워크의 깊이가 깊어지면 발생하기 쉬운 현상으로 Vanishing Gradient Problem(기울기 소실 문제) 등의 문제들이 원인이다.Vanishing Gradient ..
저번 포스팅에서 모델 일반화(generalization)의 필요성과 일반화 중 어떤 방법이 있는지를 살펴보았다.[Machine Learning] 오버피팅(Overfitting), 언더피팅(Underfitting)의 개념 및 해결 방법위 글에서 오버피팅을 막기 위한 여러가지 방법을 소개했었다.개념은 이미 설명했으니 헷갈리기 쉬운 개념 하나만 짚은 다음 그 방법들이 얼마나 효과적인지 직접 테스트 해보자.Generalization와 Regularization의 차이점일반화(generalization)와 정규화(regularization)는 서로 연관되어 있지만 별개의 개념이다. 일반화는 훈련된 모델이 본 적이 없는 데이터, 즉 훈련 중에 사용되지 않은 데이터(예를 들어, 테스트 데이터)에 대해 모델의 기능을 ..
트레이닝 데이터를 사용해 머신 러닝 모델을 훈련하는 목표 중 하나는 모델이 본 적이 없는 데이터(혹은 레이블이 없는 데이터, 테스트 데이터)에서도 좋은 성능을 나타내게끔 일반화(generalize)를 하는 것이다. 즉, 훈련이 잘 된 모델은 학습하지 않은 데이터를 올바르게 분류하거나 결과를 예측할 수 있어야 한다. 예를 들어, MRI 결과를 가지고 암을 진단하는 네트워크를 훈련한다고 가정해보자. (관련 의료 정보에 대한 법은 무시하자.) 그 네트워크가 자신이 학습한 MRI 데이터로는 암을 잘 찾아내지만 학습하지 않은 환자의 MRI 데이터에는 제대로 암을 찾아내지 못한다고 하면 그저 쓸모없을 뿐만 아니라 자칫 생명을 잃을 수도 있는 모델이다. 위와 같은 현상이 오버피팅의 한 예인데, 오버피팅과 그에 반대되..
Convolutional Neural Network (CNN, 합성곱 신경망)컨볼루션 신경망(Convolutional Neural Network, CNN)은 이미지 분류, 객체 감지, 세분화와 같은 컴퓨터 비전 작업에 널리 사용되는 신경망이다.기존 신경망에서는 모든 입력 데이터가 1차원으로 평면화되어 신경망에 직접 입력된다.그러나 이런 접근 방식은 입력 데이터가 2D 또는 3D 구조를 갖는 이미지 또는 신호의 평면화 과정에서 원본 데이터의 구조적인 정보를 잃기 때문에 한계가 있다.이런 한계를 극복하기 위해 구조적인 데이터를 유지하면서 입력 데이터에서 중요한 특징을 효과적으로 학습하고 추출할 수 있는 CNN(컨볼루션 신경망)이 사용된다.Convolution 이란CNN은 컨볼루션이라는 연산을 사용한다.CNN..
Optimizer 역할옵티마이저(optimizer)는 머신 러닝에서 비용 함수를 최소화 하거나 목적 함수를 최대화 하기 위해 모델의 여러 파라미터들을 업데이트하는 데 사용하는 알고리즘이다.이때 비용 함수는 손실 함수나 loss function, cost function이라고도 부르는데 모델의 입력에 대한 출력과 실제 타겟 간의 차이를 측정하고, 목적 함수(objection function)는 최대화할 양(accuracy, recall, or precision 등)을 말한다.옵티마이저는 모델의 파라미터를 조금씩 업데이트하며 작동하는데 이러한 단계는 비용 함수나 목적 함수의 기울기에 의해 결정된다. 다음 예를 보고 옵티마이저를 이해해보자.당신이 산 위에 있다고 내려가는 길을 찾고 싶어한다고 상상해보자.가장 ..
이전 글에서는 0 또는 1, 개 혹은 고양이처럼 데이터를 두 가지로 분류하는 방법을 알아보았다.이번 글에서는 두 가지가 아니라 더 많은 클래스로 분류하는 방법인 Multinomial Logistic Regression 을 알아보자.Multinomial Logistic Regression\( k \) 개의 서로 겹치지 않는 카테고리가 있다고 하고 각 카테고리 \( i \)의 확률을 \( P(i) \)라고 하자.이제 \( k-1 \) 로지스틱 분류를 할 건데, 카테고리 \( 0 \)을 레퍼런스로 두고 레퍼런스 카테고리와 \( i \in [1, 2 \ldots k-1] \)의 카테고리를 비교해보자.비교를 위해 linear projection, 그러니까 \( \beta\cdot x \)을 로지스틱 함수 \( \..
아니그니까
'머신 러닝' 카테고리의 글 목록 (3 Page)