머신러닝&딥러닝 19

F1-score와 AUC는 왜 필요한데?

이전 글에서 지속 Confusion matrix란 (tistory.com) Confusion matrix란1. Confustion Matrix 이진 예측(분류 예측) 모델을 평가하는 대표적인 지표는 Confusion matrix이다. 주어진 데이터포인트를 양성(1) 또는 음성(0)으로 분류하는 문제에서, 데이터포인트의 실제 레이블과 seungbeomdo.tistory.com 4. F1-score: 최적의 양성 판단 비율을 찾기 레퍼런스에서는 F1-score라는 개념도 자주 나온다. F1-score는 정밀도와 재현율의 조화평균이다. $$F1 = 2 \times \frac{Prec \times Rec}{Prec + Rec}$$ 정밀도와 재현율 간에는 상충 관계가 존재한다. 그래서 F1-score를 사용해서 ..

Confusion matrix란

1. Confustion Matrix 이진 예측(분류 예측) 모델을 평가하는 대표적인 지표는 Confusion matrix이다. 주어진 데이터포인트를 양성(1) 또는 음성(0)으로 분류하는 문제에서, 데이터포인트의 실제 레이블과 예측된 레이블을 비교하는 행렬이다. 가로축은 실제 레이블을 나타내며, 세로축은 예측된 레이블을 나타낸다. 즉 - (1,1) 성분은 실제로 양성이고, 모델도 양성이라고 예측한 데이터포인트의 개수 TP (True Positive) - (1,2) 성분은 실제로는 음성이지만, 모델은 양성이라고 예측한 데이터포인트의 개수 FP (False Positive) - (2,1) 성분은 실제로 양성이지만, 모델은 음성이라고 예측한 데이터포인트의 개수 FN (False Negative) - (2,2..

Deep Learning #7 Transformer

1. Transformer의 도입 1.1. Transformer의 아이디어 이전 포스팅에서 Attention에 대해서 다루었다. 그런데 Attention을 공부하다보면, 결국 RNN처럼 시퀀스 순서대로 인풋들을 받을 필요가 있을까, RNN 구조를 유지하는 것이 꼭 필요할까 하는 의문이 든다. 왜냐하면 시퀀스 데이터에 RNN과 Encoder-Decoder를 사용했던 것은 단 하나의 인풋 벡터뿐 아니라 모든 인풋 시퀀스들을 고려하기 위함이었기 때문인데, Attention만을 사용하더라도 어차피 모든 인풋 시퀀스들에 적당한 가중치들을 두고 아웃풋을 만들어낼 수 있기 때문이다. 그래서 그냥 Attention만을 사용하자! 라는 아이디어 하에서 등장한 모델이 있는데, 그게 바로 Transformer이다. Tran..

Deep Learning #6 Attention

1. Encoder-Decoder 구조 1.1. Encoder-Decoder 구조(=Seq2Seq) RNN이 One-to-Many, Many-to-Many 등의 다양한 구조를 갖는다는 것을 이전 RNN 포스팅에서 살펴보았다. 그 중 한 형태인 Encoder-Decoder 구조는 Many-to-Many 구조를 약간 변형한 것이라고도 볼 수 있는데, 다음과 같은 형태이다. 인코더-디코더는 이름에서 알 수 있듯이 인코더와 디코더로 이루어진 구조이다. 인코더 파트에서는 주어진 인풋 시퀀스를 히든 스테이트로 변환한다. 디코더 파트는 히든 스테이트를 받아서 아웃풋 시퀀스를 생성한다. 왜 이런 구조를 고안해냈을까? NLP의 맥락에서 이해해보자. 가령 한국어 문장을 영어로 번역하는 RNN 모델을 만든다고 하면, Man..

Deep Learning #5 NLP의 개요

1. NLP(Natural Language Processing)의 기본 관점 1.1. NLP의 정의 NLP, 또는 자연어 처리란 인간의 언어를 컴퓨터가 이해할 수 있도록 하는 과제를 말한다. 컴퓨터 비전(CV)과 더불어 딥러닝 기술이 활발하게 적용되고 있는 분야이다. 최근 주목받는 ChatGPT도 자연어 처리 딥러닝의 일종이다. 1.2. Word Embedding Word embedding이란, 주어진 자연어를 일정한 차원의 벡터로 바꾸어주는 것을 말한다. 컴퓨터가 자연어를 받아들일 때는 사람처럼 직관적으로 받아들이는 것이 아니고 0과 1로 구성된 수열로서 받아들인다. 따라서 NLP의 첫번째 과제는 주어진 자연어를 컴퓨터에 '입력'하는 것이다. 일반적으로 하나의 단어는 N차원의 기본단위벡터(하나의 원소만..

Deep Learning #4 RNN(순환신경망)

GitHub - SeungbeomDo/DataAnalysis: Practical Codes for Data Analysis using Machine Learning and Deep Learning Practical Codes for Data Analysis using Machine Learning and Deep Learning - GitHub - SeungbeomDo/DataAnalysis: Practical Codes for Data Analysis using Machine Learning and Deep Learning github.com 1. RNN의 개요 1.1. Sequence Data 시퀀스 데이터란 데이터가 배열된 순서에도 정보가 담겨 있는 데이터를 말한다. 가령 번역기는 영어 문장을 인풋..

Deep Learning #3 다양한 CNN: VGGNet, GoogleNet, ResNet

이전 포스팅에서는 CNN의 기본적인 골격을 살펴보았다. 여기서는 CNN의 발전 과정에서 많은 기여를 한 3가지의 대표적인 CNN 모델을 소개한다. [DL] CNN의 개요 1. Computer Vision Computer Vision(CV) 문제는 컴퓨터가 이미지를 잘 이해할 수 있도록 하는 과제를 말한다. 가령 자율주행 자동차가 지금 앞에 있는 것이 사람인지 텅 빈 도로인지를 잘 파악할 수 있도록 seungbeomdo.tistory.com 1. VGG Net 1.1. VGG Net의 개요 VGG Net은 2014년 이미지넷 인식 대회에서 준우승을 한 모델이다. 이전의 뉴럴넷 모델들에 비해 압도적으로 많은 레이어들을 사용해서 Deeper CNN 모델의 시초가 되었다. VGG Net은 레이어의 개수에 따라 ..

Deep Learning #2 CNN(합성곱 신경망)

1. Computer Vision Computer Vision(CV) 문제는 컴퓨터가 이미지를 잘 이해할 수 있도록 하는 과제를 말한다. 가령 자율주행 자동차가 지금 앞에 있는 것이 사람인지 텅 빈 도로인지를 잘 파악할 수 있도록 하는 문제이다. 모든 CV에서 공통되는 단계는 주어진 이미지를 컴퓨터가 이해할 수 있는 방식으로 변환하는 것이다. 아래 그림에서 기차가 무너진 사진을 보면, 사람은 그냥 곧바로 기차가 무너졌다라고 인식한다. 하지만 컴퓨터에게 이 이미지를 입력하기 위해서는 이미지의 각 픽셀값으로 변환해서 주어야 한다. 이때 픽셀값은 흑백 여부를 나타내는 binary한 값일 수도 있고, 컬러 이미지라면 RGB가 조합된 벡터값이 될 것이다. CV를 어렵게 만드는 문제는 무엇이냐 하면, 일단 이미지를..

Deep Learning #1 딥러닝 기초: 심층신경망의 구조와 간단 코드 실습

1. Deep Neural Net 딥러닝(Deep Learning)이란 인공신경망(Artificial Neural Net)을 훈련해 회귀나 분류 문제 등을 해결하는 것을 말한다. 인공신경망은 심층신경망(Deep Neural Net) 또는 다층퍼셉트론(Multi-Layer Perceptron)이라고도 불린다. 굳이 구분할 필요는 없이 다 같은 개념으로 사용해도 된다고 본다. 심층신경망은 다음의 요소들로 구성된다. 인풋 레이어(Input Layer): 주어진 데이터가 벡터(Vector) 형태로 입력된다. 이를 인풋 벡터(Input Vector)라고도 말하며, 인풋 벡터 그 자체는 심층신경망의 입장에서는 인풋 레이어가 된다. 히든 레이어(Hidden Layer): 인풋 레이어와 아웃풋 사이를 매개하는 레이어...

Machine Learning #5 클러스터링 : 근로자 임금 분포 클러스터링

1. 클러스터링의 개요 클러스터링(Clustering)이란 샘플 내의 대상들을 일정하게 분류하는 비지도학습 과제를 말한다. 가령 아래와 같은 2차원 변수 공간에 샘플들이 분포하고 있을 때, 샘플들을 각각의 집단으로 묶어내는 작업이다. 위 그림과 같은 상황에서, 직관적으로 세 개의 클러스터로 묶어내고 싶다는 생각이 들 것이다. 그러나 그런 기준들은 연구자의 직관에 의존하고 있어서 임의적이라는 한계를 갖는다. 클러스터링 기법들을 활용하면 임의성의 문제를 극복하고 샘플들을 일관적이고 합리적인 방식으로 묶어낼 수 있다. 나아가서 서로 특성이 다른 샘플들을 서로 다른 클러스터로 분류해 놓은 후에, 각 클러스터들이 어떤 특징을 갖는지 인사이트를 얻어낼 수 있다. 또는 원래 주어진 문제가 회귀 문제였다면, 샘플 전체..