머신러닝&딥러닝/기초정리 14

해석 가능한 신경망 (Interpretable Neural Network)

안녕하세요! 오늘은 '해석 가능한 신경망'에 대해 알아보는 시간을 가져볼까 합니다. 머신러닝에 관심이 많은 분들이라면 한 번쯤 들어보셨을 이야기인데요. 왜 해석 가능한 신경망이 필요한가요? 머신러닝 모델, 특히 딥러닝 모델은 '블랙박스'라는 별명이 있죠. 이는 모델의 내부 동작 방식이 복잡하고 불투명하기 때문입니다. 하지만 이런 불투명성은 신뢰성 저하를 가져오며, 오류 발생 시 원인 분석을 어렵게 만듭니다. 특히 의료, 금융 등과 같이 중요한 분야에서는 심각한 문제를 일으킬 수 있죠. 그래서 '왜' 그런 결과가 나왔는지 이해하고 설명할 수 있는 '해석 가능한 신경망'이 필요하게 되었습니다. 해석 가능한 신경망을 어떻게 만드나요? 해석 가능한 신경망을 만드는 방법에는 여러 가지가 있습니다. 대표적으로 fe..

데이터를 수식으로 변경! Symbolic Regression 이란?

Intro AI는 많은 데이터와 큰 모델을 사용하며 발전을 이루어왔습니다. 하지만 항상 black-box라는 한계로 신뢰하지 못한다는 치명적 단점을 가지고 있습니다. 최근에는 많은 데이터를 학습한 덕분에 좋은 성능을 내는 Large language model(LLM)이 많이 공개되고 있지만 여전히 엉뚱한 답변을 내놓는 hallucination이 나타나는 경우가 많이 있습니다. 이런 문제를 해결하기 위해 interpretable AI에 대한 연구가 많이 이루어지고 있습니다. 이번 글에서는 그중 한 갈래인 symbolic regression에 대해 소개하려고 합니다. Symbolic Regression 이란? Symbolic regression은 input x, output y에 대한 set이 있을 때 이 ..

다양한 Hyperparameter Optimization 방법 리뷰

Machine Learning 알고리즘들은 강력한 성능을 보여주고 있다. 하지만 데이터가 커지면서 좋은 HyperParameter(HP)를 찾는 것은 점점 비용이 많이 드는 어려운 문제가 되었다. 보통 찾아야 하는 HP는 여러 개이고 그 범위가 클 수도 있기 때문에 좋은 HP 조합을 찾는 것은 어렵다. 이런 문제는 과거부터 있었고 다양한 방법이 제시되어왔다. 이에 대해 간단히 정리해본다. 1. Manual Search Manual search는 사용하기 쉬운 방법이다. 사용자가 경험적으로 괜찮다고 여기는 HP 조합을 선정하여 tuning을 하는 방식이다. 경험이 부족하면 사용하기 어렵고 자동화된 알고리즘이 아니라 사용자의 시간을 많이 쓸 수 있다는 단점이 있다. 2. Grid Search Grid sea..

Graph Neural Network 설명 - Introduction to GNN

이 글은 graph neural network의 원리를 이해하고 앞으로 공부해나가는데 도움을 주기 위한 목적으로 작성되었습니다. 그러므로 너무 상세한 내용은 제거하고 전체적인 구조를 이해하는데 초점을 뒀습니다. Graph 그래프는 많은 데이터가 가지고 있는 구조이다. 대표적으로 social graph, molecular graph 등이 있다. figure 1처럼 여러 개의 node(혹은 vertex)와 edge가 연결되어 있는 구조를 말한다. social graph 라면 node가 한 명의 사람이 될 수 있을 것이고 edge는 그 사이의 관계가 될 수 있다. 사람들은 각자의 개성을 가지고 있고 다르므로 node에 이런 정보를 담을 수 있으며 다른 사람과의 관계 또한 직장 동료, 친구, 가족, 원수지간까지..

Neural Network Pruning - 모델 경량화

Intro Pruning은 neural network를 경량화하고자 할 때 사용하는 방법입니다. Figure 1은 pruning을 잘 보여주는 그림입니다. 모든 node가 연결이 되어있던 왼쪽 그림으로 오른쪽과 같이 synapse(혹은 edge)와 neuron(혹은 node)를 없애는 것입니다. 당연히 무작정 없애면 안 되고 보통은 parameter가 0에 가깝다거나 훈련을 거의 안 했다거나 하는 지표를 가지고 판단하여 pruning 하게 됩니다. 실제로는 그림처럼 아예 없앤다고 이해하기보다 0으로 만들었다고 생각하면 됩니다. (이는 pruning 방법에 따라 아예 없앨 수도 있긴 합니다.) Method Structured vs Unstructured Pruning은 경량화를 위한 필수 방법인만큼 여러 ..

Multi-task learning & Meta-learning

이번 글은 Multi-task learning과 Meta-learning 알고리즘 비교와 특징을 비교하여 설명한다. Multi-task learning은 처음 딥러닝을 공부할 때부터 많이 들어온 알고리즘이다. 알고리즘의 목적은 여러 task를 함께 풀어내어 좋은 성능을 내는 것이다. 여러 task를 함께 학습하여 general 한 feature를 뽑게 하여 학습에 도움을 주며 한 번에 여러 개를 풀 수 있으므로 efficient 한 장점이 있다. Meta-learning은 익숙하지 않은 경우가 많을 것 같다. 논문은 많이 나왔지만 실제 사용하여 문제를 푸는 경우는 거의 못봤기 때문인 것 같다. 알고리즘의 목적은 unseen task에 대해 few 개의 데이터를 주었을 때 그것을 빠르게 학습하도록 만드는 ..

Likelihood, Maximum likelihood estimation 이란?

딥러닝 공부를 하다 보면 likelihood가 자주 등장한다. 기본적인 내용들을 다시 한번 remind 하기 위해 정리해둔다. Likelihood를 식으로 표현하면 다음과 같다. $$ L(\theta|D) $$ $\theta$는 parameter이고 D는 data를 의미한다. 식을 그대로 해석해보면, 가능도는 관측값(D)이 주어졌을 때(given) 관측값이 $\theta$에 대한 확률분포 $P(\theta)$에서 나왔을 확률이다. likelihood가 익숙하면서 안 익숙한(?) 이상한 느낌이 드는 이유는 likelihood와 비슷하게 생긴 $Pr(D|\theta)$라는 식을 자주 보았기 때문이다. 이 식은 '확률'을 나타내는데 중, 고등학교 과정에서 자주 봤었다. 확률은 가능도와 다르게 확률분포 $P(\..

Variational AutoEncoder란?

오토인코더의 모든 것(youtube) - 이활석 Variational AutoEncoder와 ELBO(blog) - Seon Guk "Auto-Encoding Variational Bayes"(2014) - Kingma et al. "An Introduction to Variational AutoEncoders(2019)" - Kingma et al. 이활석님의 명강의 '오토인코더의 모든 것' , VAE와 ELBO에 대해 슬라이드로 잘 정리한 블로그, Variational AutoEncoder(VAE)에 대한 논문을 참조하였다. VAE는 Autoencoder와는 다르게 latent variable을 Gaussian 분포 같이 잘 알려진 Prior 분포를 설정하고 거기에 맞출 수 있어서 이미지 등을 만들 ..

KL-divergence with Gaussian distribution 증명

https://stats.stackexchange.com/questions/7440/kl-divergence-between-two-univariate-gaussians https://namu.wiki/w/%EA%B0%80%EC%9A%B0%EC%8A%A4%20%EC%A0%81%EB%B6%84 https://mathcs.clarku.edu/~djoyce/ma217/contexp.pdf https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%EB%B6%84%ED%8F%AC 이번에는 두 개의 서로 다른 Gaussian 분포를 가정했을 때 KL-divergence(Kullback–Leibler divergence, KLD)를 구하는 유도 과정을 정리한다. 위의 여러 링크들을 참고..

Auto Encoder란? - Manifold와 차원 축소

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