전체 글 61

Image Foundation Model & Transfer methods

Intro 요즘 사회적으로 가장 핫한 주제가 ChatGPT와 같은 Foundation Model이다. 불과 몇 년 전만 해도 AI를 사용해서 실질적인 이익을 얻는 것은 아직 시간이 걸릴 것이라는 의견이 많았는데 OpenAI의 ChatGPT 열풍으로 변곡점을 맞이한 듯하다. 뿐만 아니라 최근 나오는 이미지 생성 모델들 또한 엄청난 성능을 보이며 많은 이들이 사용하고 있다. 덕분에 많은 기업들이 빅 모델(big model)을 만드는 것에 뛰어들고 있다(Fig 1). 이번 글에서는 자연어 생성 모델은 생략하고 이미지 생성(stable diffusion)과 이미지 분류(CLIP)에 관한 모델과 big 모델을 튜닝하기 위한 몇 가지 알고리즘을 소개한다. Zero-shot Image Classification GP..

객체 지향 프로그래밍 [Python]

객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 객체들의 집합으로 프로그램의 상호 작용을 표현하는 프로그래밍 방법 중 하나다. Python을 처음 배울 때 기본적인 내용을 배웠지만 객체 지향 방법의 장, 단점과 어떨 때 사용하고 어떻게 사용하는 것이 좋은지 잘 알지 못해 현업에서 사용하는 데 애를 먹었다. 그래서 이 글에서는 객체 지향 프로그래밍을 사용하는데 필요한 내용들과 지켜야하는 원칙들을 예시와 함께 남긴다.클래스(class) VS 객체(object) VS 인스턴스(instance)클래스는 만들고자하는 객체 들의 공통적 성질을 묶어 추상화하여 표현한 것을 말한다. 이 말이 어렵게 느껴질 수 있는데, 예를 들면 현실에서 '사람'이라는 개념도 여러 사람들의 공통적 성..

python 2023.01.29

Mask + Neural Network = ?

Intro 일반적으로 딥러닝에서 mask는 pruning시에 사용하게 된다. 예를 들어 Lottery ticket hypothesis([1])의 경우 훈련을 마친 모델 파라미터의 magnitude를 기준으로 mask를 생성한다. 일정 값보다 작은 파라미터는 0, 나머지는 1인 mask가 생성된다. 다른 많은 pruning 방법에서도 binary mask를 생성하는 방식을 따른다. Mask는 pruning 뿐 아니라 다양한 task에서 사용되는데, 이번 글에서 그와 관련된 논문들에 대해 간단히 정리해보고자 한다. Mask is all you need Intro에서 언급한 것과 같이 mask는 pruning에서 많이 사용된다. Pruning에서 mask가 어떤 역할을 하는지 Deconstructing Lot..

Lottery ticket hypothesis 와 후속 연구 정리

Intro AI는 대용량의 데이터와 큰 모델을 기반으로 많은 발전을 이루고 있다. 하지만 많은 데이터와 거대 모델을 학습시키는 것은 많은 비용이 들게 된다. 큰 모델은 저장 용량이 클 뿐 아니라 예측을 할 때 많은 연산을 요구하기 때문에 효율적이지 않다. 특히 스마트폰 같은 작은 기계에서 사용하기에 적합하지 않다. 그에 따라 모델의 크기를 줄여 메모리를 줄이며 연산량을 줄여보자 하는 시도가 많이 이루어졌고 대표적인 분야로 knowledge distilation, pruning 등이 있다. 이번 글에서는 pruning, 특히 ICLR 2019에서 best paper를 받은 lottery ticket hypothesis에 대한 해석과 단점을 극복한 후속 논문들을 살펴볼 것이다. 내용을 설명하기 전에 글을 읽..

Neural Tangent Kernel 리뷰

이번에 리뷰할 Neural Tangent Kernel (NTK) 논문은 NIPS 2018에 실린 논문으로 많은 인용수를 자랑하는 파급력 높은 논문입니다. 하지만 논문을 이해하려면 수학적 배경지식이 많이 필요해서 읽기가 어렵습니다. 다행히 설명을 잘해놓은 외국 블로그([2])가 있어 많은 참고를 하였습니다. 이 논문은 2 hidden layer와 infinite nodes의 neural network는 linear model로 근사하여 생각할 수 있고, 그 덕분에 문제를 convex 하게 만들어 해가 반드시 존재한다는 것을 보여줍니다. 어떻게 linear model로 근사하여 생각할 수 있다는 것인지 차근차근 알아보겠습니다. Taylor Expansion Taylor expansion은 매우 작은 영역에서..

강화학습 기초 다지기 (2) - 강화학습 문제 풀이 기법 (DP, MC, TD)

강화 학습은 최적 가치 함수를 찾거나 그것을 만드는 좋은 정책을 찾는 것을 목표로 한다. 하지만 이는 쉽지 않다. 이를 풀기 위한 여러 가지 방법이 있는데 유명한 방법 몇 개만 정리한다. 첫 번째로 환경에 대해서 알 때 동적 계획법(Dynamic Programming: DP) 방법을 사용할 수 있다. '환경'에 대해서 안다는 것은 상태와 행동에 대한 보상 함수 R과 상태천이 행렬 P를 안다는 의미다. 이는 현실적이지 않다는 단점이 존재하지만 매우 효율적이고 문제를 해결하기 쉽다는 장점이 있다. 동적 계획법은 큰 문제를 분할한 작은 문제의 최적 값이 큰 문제에서도 최적 값이어야 한다. 또한 큰 문제의 해를 구하기 위해서, 작은 문제의 최적 해를 재사용할 수 있어야 한다. 이때, 정책 평가(Policy Ev..

강화학습 기초 다지기 (1) - 마르코프

마르코프는 강화 학습 기초에 꼭 등장하는 개념이다. 이번 글에서는 마르코프와 관련된 개념들을 정리할 것이다. 마르코프 특성 (Markov Property) '마르코프 하다'라는 것은 미래 상태 $s_{t+1}$은 현재 상태 $s_{t}$에만 의존한다는 것을 의미한다. 다른 말로 하면 현재 상태를 알면, 그 이전의 모든 역사를 아는 것과 동일하게 미래 상태 $s_{t+1}$를 추론할 수 있다는 의미다. 이를 수식으로 표현하면 다음과 같이 나타낼 수 있다. $$ P(s_{t+1}|s_{t}) = P(s_{t+1}|s_{t}, s_{t-1},..., s_{0}) $$ 마르코프 과정 (Markov Process - MP : $$) 마르코프 특성을 만족하는 상태의 반복을 마르코프 과정(Markov process)..

다양한 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은 경량화를 위한 필수 방법인만큼 여러 ..