-
Gradient Boosting Overview
소개 Machine Learning에 대한 대중적인 인식은 대부분 Deep Learning, Neural Networks에 치중되어 있지만, 그 밖에도 활발하게 연구되면서 활용되고 있는 알고리즘들이 많이 있습니다. 이 글에서는 그 중에서 Gradient Boosting에 알고리즘에 대한 소개와 이해를 목표로 합니다. 신경망의 근간이 되는 Gradient Descent 알고리즘과 이름이 비슷하지만, Gradient Boosting 알고리즘과 Gradient Descent 알고리즘은 구조적으로 큰 유사성이 없습니다. 둘 다 loss function을 최소화한다는 유사점은 있지만, 작동 원리는 상이하며 각자에 기대하는 역할이 구분됩니다. Gradient Boost 알고리즘은 결정 트리, 랜덤 포레스트 알고리즘에 기반하며,...
-
Forward Forward algorithm
서론 인공지능의 대부 Hinton교수가 새로운 신경망 학습 방법을 고안했다. 2022년 12월 27일에 아카이브에 올라온 논문이라 글 작성 시점에서 아직 따끈따끈한 논문이다. 인공지능의 대부가 쓴 논문인 만큼 벌써 조금씩 인용이 되고 있다. 과연 Hinton교수가 이번에 발명한 학습방법은 어떤 것인지 살펴보도록 하자. 본 글은 Hinton교수님의 Forward Forward algorithm 논문[1] 중에서도 Forward Forward의 작동 원리만을 이해하는 것에 초점을 두고 정리하였다. 논문 전체 내용을 정리하는 목적이 아니므로 빠진 내용들이 있다. FF에 대해 더 궁금하다면 논문 원문을 살펴보는 것을 강력하게...
-
Sequence model: from RNN to Attention
Introduction Sequence model은 연속적인 데이터를 입력으로 받아서 연속적인 데이터를 출력하는 모델을 의미합니다. 다시 말해, 시계열 데이터를 다루는 모델이라고 할 수 있습니다. Sequence model이 사용되는 대표적인 task로는 번역, 챗봇, 동영상 생성 등등이 있습니다. 이번 글에서는 가장 기초적인 Sequence model인 RNN부터 요즘 모든 딥러닝 분야에서 필수적으로 사용되는 개념인 Attention까지 발전 흐름을 따라 알아보고자 합니다. RNN overview RNN (Recurrent Neural Network)은 서로 독립적인 데이터가 아닌 연속적인 데이터를 다루기 위한 신경망입니다. 연속적인 데이터를 시계열 데이터라고도 하는데, 주가, 음성, 대화,...
-
WaveBound: Dynamic Error Bounds for Stable Time Series Forecasting (NeurIPS'22) 눈문 소개
올해 11월 말에 열릴 머신러닝 학회인 NeurIPS 2022에 제가 제출했던 논문 “WaveBound: Dynamic Error Bounds for Stable Time Series Forecasting”이 어셉되어서 리뷰하고자 합니다. 소개 시간의 흐름에 따라 순차적으로 기록된 데이터를 시계열 데이터라고 부릅니다. 시계열 예측은 과거 시계열 데이터로부터 미래를 예측하는 테스크로 교통 속도 예측, 에너지 사용량 예측 등 다양한 분야에서 주목을 받아왔습니다. 최근에는 Informer, Autoformer와 같은 딥러닝 기반 시계열 예측 모델이 주목받았지만 본 연구에서 이러한 모델은 여전히 과적합에 취약함을 보여주었습니다. 기존 딥러닝 모델의 과적합...
-
Mining Multi-Label Samples from Single Positive Labels (NeurIPS'22) 눈문 소개
올해 11월 말에 열릴 머신러닝 학회인 NeurIPS 2022에 제가 제출했던 논문 “Mining Multi-Label Samples from Single Positive Labels”이 어셉되어서 리뷰하고자 합니다. 소개 자연에 존재하는 많은 이미지 데이터셋은 여러 가지의 속성을 가지고 있습니다. 예를 들어, 얼굴 이미지 데이터셋은 검은 머리, 웃는 표정, 남성과 같은 속성을 가질 수 있습니다. 일반적으로 이런 다중 속성을 모두 조작하여 이미지를 생성하기 위해서는 모든 속성의 존재 여부가 레이블링된(다중 레이블) 데이터셋을 사용해야 하는데 이는 대채로 매우 비쌉니다. “Mining Multi-Label Samples from Single Positive...
-
간단한 딥러닝 기반 장기 시계열 예측 모델 리뷰 (FiLM, NLinear)
소개 시계열 예측은 과거 시퀀스로부터 미래 시퀀스를 예측 하는 테스크로서 교통, 에너지 사용량 분석, 금융 등 다양한 분야 및 비즈니스 모델에서 활용도가 높기 때문에 큰 주목을 받아왔습니다. 시계열 예측을 정확하게 하기 위해서는 시계열 데이터에 있는 복잡한 주기성이나 경향을 포착할 수 있어야 합니다. ARIMA나 Kalman filter 같이 고전 타임시리즈 예측에 쓰이는 방법론은 주로 시계열 모델링에 대해 선형성 같은 강한 가정을 하고 있고 적절한 파라미터를 선택하는데 어려움이 있습니다. 이에 따라 데이터 내의 복잡한 모델링 능력을 배우기 위해...
-
GNN을 이용한 컴파일러 기원 문제 해결 방법
1. Introduction 프로그래머가 작성한 코드는 컴파일 과정을 거쳐 기계가 해석 가능한 코드로 변환됩니다. 이 때 동일한 소스 코드임에도 불구하고 컴파일러의 종류에 따라 최종 결과물인 실행 파일에는 차이가 있을 수 있습니다. 하지만 일반적으로 실행 파일로부터 컴파일러의 종류와 버전, 최적화 옵션 등을 알아맞추는 것은 다소 난이도가 있는 작업이고 특히 디버깅 심볼을 포함한 여러 메타 데이터가 제거된 실행 파일에서는 파일에 포함된 문자열 등을 활용할 수 없이 오로지 데이터 영역의 값만을 통해 컴파일러를 유추해야 합니다. 한편, 실행 파일로부터 컴파일러의...
-
SCLI Framework and its Applications on Minimax Problems
Introduction Machine Learning, Artificial Intelligence의 가장 기본적인 구조는 주어진 데이터에 대한 loss function을 만들고, 이를 최소화하는 것입니다. loss function $f$를 design 했다면, 이 $f$를 최소화하는 것은 최적화 알고리즘의 영역에 들어오게 됩니다. 특히, ML/AI 분야에서는 $f$를 최소화하기 위하여 그 gradient $\nabla f$를 사용하는 gradient-based optimization을 주로 사용합니다. 이러한 환경에서, 최적화 알고리즘을 연구하는 사람들이 자연스럽게 최적화 알고리즘에 대하여 주로 관심을 가지게 되는 정보는 크게 다음과 같습니다. $f$에 대한 특정 조건이 주어졌을 때, 주어진 알고리즘이 얼마나 빠르게 최적해로...
-
비지도 방식으로 GANs의 이미지 생성을 조작하는 방법
소개 GANs는 이미지 생성이나 스타일 변화 테스크에서 굉장한 성능을 보여주고 있습니다. 특히, StyleGAN, BigGAN과 같은 최신 모델은 이미 실제와 구분이 힘들정도로 자연스러운 이미지를 생성합니다. 유저가 아웃풋 이미지를 원하는 형태로 조절하는 연구 또한 많이 진행되었으나 대부분 추가적인 라벨을 사용해서 모델을 학습하는 것에 초점을 맞췄었습니다. GANs의 해석 가능성에 대한 연구가 활발해지면서 각 특징을 조작하는 변수가 잘 구분되도록 학습하는 테스크인 disentanglement learning이 주목받게 됩니다. InfoGAN, beta-VAE 등이 대표적인 모델로 비지도 방식으로 생성 모델을 학습하면서 출력 결과의 중요한 특징들을...
-
Gumbel softmax
소개 언어 모델, 어텐션 메커니즘, 강화학습 등 다양한 문제에서 이산확률변수(discrete random variable)를 모델링해야 할 때가 있습니다. 하지만, 뉴럴 네트워크를 가지고 이러한 이산확률변수를 표현하는 것은 매우 어렵습니다. 왜냐하면 역전파(backpropagation) 알고리즘으로 미분 불가능(혹은 기울기가 0)인 레이어를 학습할 수 없기 때문입니다. 이러한 이산적인 연산을 sigmoid나 softmax 함수로 대체하는 것을 고려해 볼 수도 있습니다. 하지만, 이산적인 상태를 표현해야 하는 경우에는 이러한 함수를 사용할 수 없습니다. 또 다른 방법인 몬테카를로 방식으로 이산적인 연산의 gradient를 추정할 수 있지만 이 경우 큰...
-
Pix2Pix 이미지 변환 모델 소개 및 구현
소개 “Image-to-Image Translation with Conditional Adversarial Nets”은 CVPR 2017에 accept된 논문입니다. 이 논문은 이미지의 도메인간 변화를 다루는 문제인 image to image translation을 처음으로 정의했습니다. 이 변환에는 흑백 사진을 컬러화 시키는 것, 윤곽이 주어졌을 때 물체를 그리는 것 등이 포함됩니다. 이전까지는 각각의 변환 문제마다 다른 모델을 사용했었는데 해당 논문에서는 자신들의 Pix2Pix 모델이 대부분의 변환 문제를 잘 해결함을 보여주었습니다. 이미지 변환 예시 (출처: https://phillipi.github.io/pix2pix/) 이미 수많은 이미지 처리 문제는 convolutional neural nets(CNNs)를 사용해서 해결하고 있습니다. 하지만, 여전히...
-
UCB1 알고리즘의 pseudo-regret 분석
소개 멀티 암드 밴딧(Multi-armed bandit) 문제는 순차적 의사결정 문제(sequential decision problems)의 일종으로써 충분한 정보가 주어지지 않은 상황에서 탐색(exploration)과 이용(exploitation)의 균형을 찾는 것을 목표로 합니다. 멀티 암드 밴딧 문제에는 다양한 변종이 있는데 이번 글에서는 확률론적 멀티 암드 밴딧(Stochastic Multi-armed Bandit)과 성능 지표인 후회값(regret)의 정의를 알아보겠습니다. 또한, 이 문제를 해결할 수 있는 간단한 알고리즘 중 하나인 UCB1의 유사 후회(pseudo-regret)의 상한이 라운드 수에 대한 로그 스케일 이하임을 증명해보겠습니다. Stochastic Multi-armed Bandit 확률론적 멀티 암드 밴딧(Stochastic Multi-armed Bandit)은 각...
-
Deep Q-learning으로 뱀 게임 인공지능 만들기
소개 강화학습 알고리즘을 테스트하기 위해 다양한 라이브러리를 사용할 수 있지만 원하는 환경이 없는 경우가 종종 있습니다. 이런 경우 간단한 환경은 pygame, opencv 같은 라이브러리를 가지고 직접 만들어서 테스트해볼 수 있습니다. 이번 포스트에서는 뱀 게임 환경을 직접 구현하고 강화학습 알고리즘을 적용하는 과정을 살펴볼 것입니다. 이를 위해 pygame으로 뱀 게임을 만들고 Keras로 딥마인드의 “Playing Atari with Deep Reinforcement Learning”에서 소개되었던 DQN(Deep Q-Networks)을 구현 해보겠습니다. 본 포스트에서 다루는 뱀 게임 인공지능 전체 코드는 여기에서 확인할 수 있습니다. DQN으로...
-
Pay Less Attention with Lightweight and Dynamic Convolutions 리뷰
컨볼루션 그림은 이 글(https://qiita.com/koreyou/items/328fa92a1d3a7e680376)을 참고해서 만들었습니다. 소개 시퀀스-투-시퀀스(Sequence-to-sequence) 모델은 자연언어처리(Natural Language Processing) 분야의 다양한 테스크를 처리하기 위해 쓰이고 있습니다. 이중 수많은 SOTA 모델이 “Attention Is All You Need”에서 소개된 트랜스포머(Transformer)를 기반으로 설계되어있고 이 모델에서 사용하는 어텐션 기법인 셀프 어텐션(self attention)은 SOTA 성능을 달성하기 위해 꼭 필요한 구조로 여겨지곤 합니다. WMT2014 영어-독일어 데이터 셋에서 기계 번역 모델의 성능 순위 (2019.12.30) “Pay Less Attention with Lightweight and Dynamic Convolutions”은 facebook AI research 팀의 논문으로 ICLR 2019에서 공개되었습니다....
-
Cold Fusion
Cold Fusion Attention을 사용한 Seq2Seq 모델은 기계 번역이나 이미지 캡션, 그리고 음성 인식 등의 여러 자연어 처리 태스크에서 사용되고 있습니다. Cold Fusion은 Seq2Seq 기반의 모델에서 성능 향상을 위해서 제안된 방법 중 하나로, 사전에 학습된 언어 모델을 함께 사용하여 성능을 높이는 것을 목적으로 합니다. 이 글에서는 먼저 Attention을 사용한 Seq2Seq 모델에 대해서 간략히 알아보고, 이 모델의 성능을 높이기 위한 semi-supervised learning 기법에 대해서 알아볼 것입니다. 마지막으로, Cold Fusion 이전에 제안되었던 Langauge model을 사용하는 방법들인 Shallow Fusion과...
-
WAVENET: A GENERATIVE MODEL FOR RAW AUDIO
소개 2016년 구글 딥마인드에서 오디오 생성 모델인 wavenet에 관한 논문을 공개했습니다. 이 당시 대부분의 TTS 모델은 녹음된 음성 데이터를 쪼개고 조합해서 음성을 생성하는 방식인 Concatenative TTS를 기반으로 구현되었습니다. 이 방식은 기본적으로 많은 양의 데이터를 필요로 했고, 화자나 톤을 바꾸는 등의 변형을 할 때마다 새로운 데이터가 필요했습니다. 이에 따른 대안으로 통계적인 방법으로 음성을 생성하는 parametric TTS 방식이 주목받았지만 Concatenative TTS에 비해서 생성된 음성이 덜 자연스러웠습니다. wavenet은 기존의 방식과 다르게 오디오의 파형을 직접 모델링하여 훨씬 자연스러운 음성를...
-
Listen, Attend and Spell
소개 전통적으로 음성 인식 모델은 음향 모델(acoustic model), 발음 모델(pronounciation model), 언어 모델(language model) 등 다양한 구성 요소로 이루어져 있었고 각각의 모델을 따로 학습하여 사용했습니다. 음성 인식 분야에서 Listen, Attend and Spell (ICASSP 2016)은 end-to-end 방식으로 학습할 수 있는 뉴럴넷 모델을 제시합니다. Sequence to sequence with attention Listen, Attend and Spell(LAS)는 sequence to sequence framework와 attention 기법을 사용하여 음성 인식을 합니다. sequence to sequence(seq2seq) 모델은 가변길이의 입출력 시퀀스를 학습할 수 있도록 설계되었습니다. seq2seq 모델은 encoder...
-
빠르게 수렴하는 MCMC 만들기
저번 포스트에서 Markov Chain Monte Carlo(MCMC)에 대해서 간략히 알아보고 MCMC를 구현하는 대표적 알고리즘인 Metropolis-Hastings 알고리즘을 이해해보았습니다. 이번에는 이어서 MCMC의 수렴속도에 대해 논의해봅시다. MCMC가 만드는 샘플들은 target distribution에 점점 수렴하는 특징이 있습니다. 다르게 말하면 MCMC가 만들어내는 샘플을 사용하기 위해서는 샘플들이 target distribution에 수렴할 때 까지 기다려야 합니다. 적절히 수렴한 상태를 mix 되었다고 하고 이때까지 걸리는 시간을 mixing time이라고 합니다. 저번에 MCMC가 다른 샘플링 기법들에 비해 빠른 수렴속도를 가진다고 했는데, 사실 절대적인 수렴속도는 일반적으로 빠르지 못합니다. 때문에...
-
Markov Chain Monte Carlo 샘플링의 마법
이번 포스트에서는 강력한 샘플링 기법 중 하나인 Markov Chain Monte Carlo(MCMC)에 대해 알아보겠습니다. MCMC의 활용도는 굉장히 넓어서 머신러닝을 비롯한 베이지안 통계학, 통계물리학, 컴퓨터비전, 자연어처리 등의 분야에 널리 쓰이고 있습니다. 하지만 MCMC는 역사가 짧고 (1990년대에 들어서 영향력을 발휘하기 시작) MCMC를 설명한 대부분의 자료가 수학적인 언어로만 쓰여진 탓에, 아직까지 개발자들에게 읽고 적용하기 좋은 가이드가 부족한 상태입니다. 특히나 한글 자료는 많이 부족합니다. 따라서 국내 개발자들도 MCMC를 이해하고 실제로 사용할 수 있도록 알고리즘을 체득하면 좋겠다고 생각해서 이 글을 작성하게...
-
Generative Adversarial Networks
서론 2014년, 머신 러닝 분야의 가장 유서깊고 권위 있는 학회인 NIPS에 ‘Generative Adversarial Networks’라는 한 편의 논문이 발표되었습니다. 이름만으로는 굉장히 난해해 보이는 이 논문의 제목은 한국어로 ‘생성 적대 망’ 정도로 해석할 수 있겠는데요. 이 논문은 기존의 머신 러닝 기술이 다소 약한 모습을 보였던 Generative 모델의 성능을 혁신적인 끌어올린 흥미로운 아이디어를 담고 있었습니다. 당시에는 한계점과 단점 또한 명확한 모델이라는 지적도 있었지만, 점차 단점을 개선한 후속 논문이 나오며 현재는 컴퓨터 비전 분야의 완전한 대세로 자리잡게 되었습니다. 핵심...