반응형

전체 글 66

강화학습 기초 다지기 (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은 경량화를 위한 필수 방법인만큼 여러 ..

비전공자 AI 연구원의 AI 회사 소개

안녕하세요! 지난 글에서는 제가 비전공 학사로 어떻게 AI 연구원으로 취업하게 되었는지를 적어보았습니다(여러 일이 겹쳐서 한동안 적지 못했네요..). 이번에는 AI 연구원의 종류와 실제로 어떤 일들을 하고 있는지, 일을 하면서 어려운 것과 느낀 것들을 말해보려고 합니다. 궁금하신 분들에게 도움이 되길 바랍니다. 갈만한 AI 회사는 많다! 보통 AI 연구원이 하는 일이라 하면 쉽게 떠올릴 수 있는 것들은 아래와 같을 것입니다. 1. 동영상, 커머스 상품 등의 추천 시스템 개발 (유튜브, 에이블리, 지그재그 등) 2. 자연어 처리를 활용한 챗봇 시스템 등의 개발 (스캐터랩, 튜닙 등) 3. 이미지처리(vFlat 같은 어플 스캐너 등), 생성(webtoon이나 SNOW 등)하는 서비스를 개발 (보이저엑스, 네..

Story 2022.01.23

비전공자 학사 출신의 AI 연구원 도전기 (2)

안녕하세요. 지난 글에 이어서 이번에는 실력을 쌓기 위해 어떤 것들을 했는지 구체적으로 풀어보겠습니다. 많은 도움이 되시길 바랍니다. 기초를 탄탄히?! AI 공부는 프로그래밍, 영어, 수학, 통계학 실력을 필요로 합니다. 참고로 저는 처음 공부를 시작했을 때 프로그래밍을 잘 알지 못했습니다. 영어 공부도 수능 이후로 해본 적이 없었고 수학은 그나마 학과 공부로 조금 한 정도였습니다. (상중하로 표현하자면 프로그래밍 하, 영어 중, 수학 중 정도 실력이었습니다.) 그러면 '이것들을 기초부터 탄탄히 쌓아야 할까?'라는 고민을 자연스레 하게 됩니다. 하지만 저는 졸업과 동시에 취업이 목표였기 때문에 시간이 1년 반 정도밖에 남지 않은 상황이었습니다. 그래서 'AI 공부를 바로 시작하되 모르는 게 나올 때마다 ..

Story 2021.11.20

비전공자 학사 출신의 AI 연구원 도전기 (1)

안녕하세요. 오늘은 AI 공부를 시작하고 취업을 하기까지의 얘기를 해보려고 합니다. 제가 했던 고민들을 다른 분들도 많이 하고 계실 거라 생각하여 도움을 드리고자 글을 쓰게 되었습니다. 비전공자 학사로는 AI 취업하기 힘들어! 저는 서울 중위권 대학교를 다니며 3학년 2학기부터 프로그래밍과 AI에 관심이 생겨 공부하기 시작했습니다. 학과는 AI나 프로그래밍과는 관련이 없는 비전공자 였습니다. 그래서 그전까진 프로그래밍이나 통계학을 전혀 몰랐습니다. 졸업이 1년 반밖에 남지 않은 시점에서 공부를 시작했기 때문에 이걸로 취업을 할 수 있을까 걱정을 많이 했습니다. 주변에 얘기를 해보거나 인터넷에 검색을 해보면 아래와 같은 부정적인 말들만 한가득 돌아왔습니다. '석사 이상이 아니면 AI 연구원으로 취업하기는 ..

Story 2021.11.07

Python multiprocessing 으로 병렬처리

CPU를 사용해서 python을 처리하려다 보면 병렬 처리가 간절한 경우들이 생긴다. 이때 사용할 수 있는 간단한 방법이 python에 내장된 multiprocessing 라이브러리다. 사용법도 간단하고 직관적이라 바로 적용하기 간편하다는 장점이 있다. multiprocessing 관련 가이드를 보면 오히려 글이 너무 길고 사용 방법이 복잡해 보여서 거부감이 들기 쉽다. 이 글에서는 가장 간단하게 적용할 수 있는 방법을 코드와 함께 남겨 놓는다. 우선 코드를 먼저 보면 다음과 같다. from multiprocessing import Pool, cpu_count import psutil def _check_usage_of_cpu_and_memory(): memory_usage = psutil.virtual..

python 2021.10.31

논문 리뷰: BatchEnsemble: An Alternative Approach to Efficient Ensemble and Lifelong Learning

"BatchEnsemble: An Alternative Approach to Efficient Ensemble and Lifelong Learning" (ICLR 2020) - Wen et al. 여러 모델을 사용하여 Ensemble을 하면 보통 single model을 사용하는 것보다 좋은 성능을 가져온다. 하지만 모델을 여러 개 training 해야 하므로 모델 개수만큼 computational cost가 발생하게 된다. 이번 논문은 이런 단점을 극복하기 위해 나온 논문이다. Introduction 여러 사람이 함께 문제를 풀면 더 좋은 결과를 가져오는 경우가 많다. 이런 직관적 이유에서인지 Ensemble 방법은 오래전부터 사용해왔다. 실제 performance가 좋았고 많은 연구가 되어왔다. 단점..

논문 리뷰: Bayesian Meta-Learning for the Few-Shot Setting via Deep Kernels

"Bayesian Meta-Learning for the Few-Shot Setting via Deep Kernels" (NIPS 2020) - M Patacchiola et al. Meta-learning 은 new task의 적은 데이터를 빠르게 학습시켜 test 데이터를 잘 맞추고 싶을 때 사용하는 알고리즘이다. 대표적인 방법으로 gradient based meta learning의 MAML이 있다. 이번 논문은 gaussian process를 사용한 model-based meta learning 방법이다. neural process는 gaussian process를 흉내 낸 방법인 반면 이 논문은 직접 사용한다는 차이점이 있다. Introduction MAML과 같은 gradient-based m..

반응형