반응형

머신러닝&딥러닝 52

논문 리뷰: Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles

"Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles" (ICML 2017) - DeepMind https://www.edwith.org/bayesiandeeplearning/joinLectures/14426 기존의 연구와 한계, 해결책 딥러닝이 발전하며 많은 발전을 이루었지만 아직 부족한 것들이 많이 있다. Uncertainty를 구하는 일이 그중 하나다. 특히 의료, 금융, 자율주행 등의 task에서 overconfident 한 예측은 치명적인 결과를 이끌 수 있기 때문에 불확실성이 더욱 중요한 키워드가 되었다. 이 논문이 나오기 전에 uncertainty를 구하는 방법들은 대부분 베이지안과 관련이 되어 있었다. 베이지..

베이지안 딥러닝 (4) - variational inference

베이지안 딥러닝의 목적은 새로운 입력(x*,y*)에 대한 Posterior를 추론하는 것이고 그에 대한 식은 다음과 같이 나타낼 수 있다. $$P(y_{*},x_{*}) = \int_{w}P(y|x_{*},w)P(w|x,y)dw$$ 이전 글에서 본 바와 같이 posterior $P(w|D)$를 구하기 어렵고 구했다해도 수많은 파라미터 w에 대해 적분을 해주는 것이 불가능하다. 그래서 다른 방법을 이용하여야 하는데 이때 사용하는 방법 중 하나가 variational inference이다. 간단히 말하면 우리가 알고 있는 어떤 분포 Q(w)를 Posterior $P(w|D)$로 근사하는 것이다. 그렇다면 그 방법은 무엇인가? 이때 등장하는 것이 KL-divergence 와 Evidence Lower BOun..

Challenges with Extreme Class-Imbalance and Temporal Coherence: A Study on Solar Flare Data

이번 논문은 Class-Imbalance와 Temporal Cocherence 한 데이터를 다룰 때 어떤 방법들이 있으며 어떤 함정을 피해야 하는지를 소개한 논문이다. Solar Flare Data로 예시를 들며 설명을 하였는데 마침 플레어와 관련한 논문을 작성하기로 해서 본 논문이다. 실제로 플레어는 X-ray flux의 파장에 따라 등급을 나누는데 굉장히 Imbalance 하다. 강한 것부터 나열하면 X, M, C, B, N인데 갈수록 많아지는 구조이다. 또한 태양은 11년이라는 주기를 가지고 있어 각 연도별로 X등급이 나오는 비율도 다르다. 논문에서는 2009~2019까지의 데이터를 사용해 아래와 같은 그래프를 나타냈다. X Class의 분포가 나머지에 비해 굉장히 적음을 알 수 있다. 논문 제목에..

논문 리뷰: Averaging Weights Leads to Wider Optima and Better Generalization(SWA)

"Averaging Weights Leads to Wider Optima and Better Generalization" - Pavel Izmailov (2019) 이번 논문은 Stochastic Weigths Averaging(SWA) 방법을 제시한 논문이다. 여러 캐글 대회에서 이 방법을 사용하여 우승을 하는 경우를 봐서 논문을 리뷰하게 되었다. Introduction SWA는 기존의 SGD 보다 더 flatter 한 solution을 찾는 방법이라고 설명한다. 그래서 generalization에 강하여 test 셋에서 훨씬 좋은 성능을 보인다. 방법 또한 간단하여 기존과 계산량 차이가 거의 없어 효과적이라 할 수 있다. SWA는 SGD를 이용하여 optimization을 진행할 때 일정 주기마다 w..

베이지안 딥러닝 (3) - 베이지안 딥러닝은 무엇인가?

Deep Learning에 베이지안을 사용하면 뭐가 좋은가? 불확실성에 대해 알 수 있다. 이에 대한 지표로 Expected Calibration Error (ECE)를 알면 좋다. 이번에 새롭게 알게 된 지표인데 상당히 유용한 것 같다. Classification을 하게 될 때 softmax를 사용하게 된다. 이 softmax는 결과값에 대한 확률 값을 주게 되는데 일반적인 머신러닝 방법에서는(특히 데이터가 별로 없을 때) 그 값이 over-confident 하게 나온다. 쉽게 예를 들어보면 고양이와 강아지를 분류하는 모델인데 어떤 사진을 주었을 때, 결과에 대한 확률 값이 한쪽으로 쏠려서 높게 나온다는 이야기이다. 제대로 분류를 하여 잘 나온다면 괜찮겠지만 아리송한 경우에도 그 값이 높을 때는 문제가..

베이지안 딥러닝 (2) - Gaussian Process Regression (1)

Gaussian Process Regression(GPR)은 Non-parametric Bayesian regression 방법으로 Gaussian Process의 성질을 이용한다. 이를 이해하기 위해 먼저 Gaussian Process(GP)를 알아야 한다. GP는 처음 들어보는 것으로 낯설지만 어렵지 않은 개념이다. GP는 Random Process의 한 종류인데 Random Process는 시간(혹은 공간) 별로 표시된 확률변수의 조합이다. 직관적 이해를 돕기 위해 시간을 t 하나로 고정시키면 Random Process는 Random Variable이 된다. 즉 하나의 시간별로 Random Variable이 있고 이것이 시간만큼 나열되어 있는 것이다. Random Process X(t)인 $t_{1..

베이지안 딥러닝 (1) - 기초 정리 (베이즈룰,ML,MAP)

딥러닝에서 Uncertainty 추정에 관심을 갖다 보니 베이지안 딥러닝이 자주 보인다. 하지만 통계를 전공하지 않아 어려움이 많았다. 그래서 따로 기초부터 심화까지 정리를 하려고 한다. 우선 가장 기초인 베이즈 룰부터 시작한다. 베이즈 룰의 수식은 아래와 같다. $$P(B|A) = \frac{P(B \cap A)} {P(A)} = \frac{P(A \cap B)} {P(A)} = \frac{P(A|B) P(B)} {P(A)} $$ *$(P(A \cap B) = P(A|B)P(B))$ 이때 각각의 수식이 어떤 용어로 불리며 어떤 의미를 가지고 있는지를 잘 이해하고 있어야 뒤에 나오는 내용들을 이해하기 쉽다. 우선 $P(B|A)$ 는 구하고자 하는 값으로 Posterior Probability라고 하며 사..

Tensorflow&Keras - LSTM 개념 및 사용법 정리

LSTM 은 Long Short Term Memory의 줄임말로 주로 시계열 처리나 자연어 처리(현재는 잘 사용 안 하지만)를 사용하는 데 사용한다. LSTM을 처음 배울 때 헷갈렸던 것은 데이터의 '순환'에 대한 개념이었다. 흔히 아래와 같은 그림으로 LSTM을 나타낸다. Input으로 x가 들어가면 여러번의 순환을 거쳐 output인 y가 나오는 구조이다. 이때 h는 그 중간다리 역할을 하는데 hidden state라고 한다. 위의 구조를 펼쳐서 보면 아래와 같다. Input 데이터인 x는 Sequence를 가지는 데이터가 되는데 위의 경우는 길이가 6인 데이터이기 때문에 총 6번의 input이 들어가게 된다.(예를 들면 단어가 6개인 문장) RNN 사이에 있는 화살표는 hidden state의 전달..

Tensorflow - 다중 클래스 학습 평가 이론 및 구현

Classification을 할 때 평가에 Precision이나 Recall 등이 필요할 때가 있다. Binary는 바로 지원이 되어 사용하면 되지만 Multi class의 경우는 따로 구현이 필요하다. 그에대한 Custom 함수를 김태영님의 블로그를 참고하여 Tensorflow 2.2 version으로 만들어 보았다. 모든 구현은 Label이 One-hot 형태가 아닌 int형 데이터일 때를 가정하였다. One-hot인 경우는 추가적으로 argmax를 해주는 과정이 필요하다. 위와 같은 Binary + Imbalanced Data 가 있을 때 , 모델이 예측치로 모두 파란색 공을 뽑아내면 제대로 학습이 되지 않았음에도 정확도가 80%가 나오게 된다. 따라서 Recall이나 Precision의 평가방법이..

Auto Encoder란? - Manifold와 차원 축소

이번 글에서는 Auto Encoder를 공부하면서 익힌 내용들을 정리한다. Auto Encoder는 Encoder와 Decoder의 구조로 되어있는데 PCA와 같은 차원 축소가 그 목적이었다. 그러므로 사실 핵심은 Encoder에서 Latent variable을 생성하는 것에 있다. Latent Variable은 Input으로 넣은 Data의 차원을 축소시켜서 만든 벡터인데 언뜻 생각했을 때 정보가 많이 손실돼서 안 좋은 거 아닌가?라고 생각할 수 있다. 이를 이해하기 위해 차원의 저주를 먼저 알 필요가 있다. 차원의 저주는 Data의 개수는 별로 없는데 이를 설명하려고 하는 변수의 차원은 클 때 일어난다. 예를 들어 데이터가 5개밖에 없는데 이를 설명하려는 길이 10인 벡터를 갖는 Parameter 개..

반응형