Posts by Category

BoostCamp

Transformer 정리

September 16 2021

Attention is all you need No more RNN or CNN modules Attention만으로 sequence 입력, 출력이 가능하다.

Basics of Recurrent Nerual Networks (RNN)

September 09 2021

Types fo RNNs 각 타임스텝에서 들어오는 입력벡터 $X_t$와 이전 state에서 계산된 $h_{t-1}$을 입력으로 받아서 현재 타임스텝에서의 $h_t$를 출력으로 내어주는 구조를 가지고 있다. 모듈 A가 재귀적으로 호출되는 구조를 가지고 있다. 왼쪽의 그림을 ...

Word Embedding 정리

September 06 2021

Word Embedding이란, 자연어가 단어들을 정보의 기본 단위로 해서 이런 단어들의 sequence라 볼때, 각 단어들을 특정한 차원으로 이루어진 공간상의 한 점 혹은 그 점의 좌표를 나타내는 벡터로 변환해주는 기법이다.

Intro to Natural Language Processing(NLP) 정리

September 06 2021

자연어 처리는 기본적으로 컴퓨터가 주어진 단어나 문장, 보다 더 긴 문단이나 글을 이해하는 Natural Language Understanding(NLU)가 있고 이런 자연어를 상황에 따라 적절히 생성할 수 있는 Natural Language Generation(NLG) 두 ...

Bag-of Words 정리

September 06 2021

현재 NLP는 Transformer가 주도하고 그 이전에는 RNN과 같이 Recurrent한 모델이 주도했지만 그 이전에는 단어 및 문서를 숫자 형태로 나타내는 Bag-of Words 기법을 정리한다.

MLP 정리

August 13 2021

Neural Networks Neural Networks are function approximators that stack affine transformations followed by nonlinear transforms.

CNN 정리

August 13 2021

Convolution Continuous convolution $(f * g)(t) = \int f(\tau)g(t-\tau)d\tau = \int f(t-\tau)g(t)d\tau$ Discrete convolution ...

Statistics 정리

August 06 2021

통계적 모델링 적절한 가정 위에서 확률분포를 추정(inference)하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표입니다. 그러나 유한개의 데이터만 관찰해서 모집단의 분포를 정확하게 알아내는 것은 불가능하므로, 근사적으로 확률분포를 추정해야 합니다. ...

RNN 정리

August 06 2021

시퀀스 데이터 소리, 문자열, 주가 등의 데이터를 시퀀스(sequence) 데이터로 분류한다. 시퀀스 데이터는 독립동등분포(Independent and Identically Distributed, i.i.d.)가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 ...

Probability 정리

August 06 2021

딥러닝에서 확률론이 왜 필요한가요? 머신러닝은 어떤 방식에서든지 결국 예측을 수행해야 합니다. 예를들어, 강화학습 방식에서도 에이전트가 할 수 있는 행동들 중에서 보상을 가장 많이 받을 수 있는 확률을 고려해야 합니다. 머신러닝에서 사용하는 손실함수(loss functio...

경사하강법 정리

August 06 2021

미분 함수 f의 주어진 점(x,f(x))에서의 미분을 통해 접선의 기울기를 구할 수 있다. 접선의 기울기는 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있습니다. 미분값을 더하면 경사상승법(gradient ascent)라 하며 극댓값의 위치를 구할 때...

Convolution 정리

August 06 2021

Convolution 신호처리에서 정말 많이 등장하는 컨볼루션 연산입니다. 기계학습에서도 컨볼루션을 사용하여 학습을 하게 됩니다. 아래 식은 각 뉴련들이 선형모델과 활성함수로 모두 연결된(fully connected) 구조를 가졌습니다. $h_i = \...

Back to Top ↑

AtCoder

AtCoder Beginner Contest 250

May 10 2022

A. Adjacent Squares (H, W) 크기의 행렬이 주어졌을 때 위치 (R, C)에서 인접한 원소의 수를 출력하는 문제이다. H와 W가 1인 경우를 예외처리해주면 쉽게 풀 수 있다.

AtCoder Beginner Contest 233

January 05 2022

A. 10yen Stamp 10엔 스탬프를 모아서 현재 $X$에서 목표치 $Y$를 달성할 때까지 몇 번을 봉투에 넣어야 하는지 계산하는 문제이다. $X$가 $Y$보다 큰 경우 0을 출력해주는 예외처리만 해주면 된다. ```cpp #include #include #include ...

Back to Top ↑

Algorithm

LIS(Longest Increasing Subsequence)

April 07 2021

원소 $N$개인 배열의 일부 원소를 골라 증가하는 부분 수열을 이룰 때, 가장 긴 증가하는 부분 수열의 길이를 구하는 코드를 작성하라

LCS(Longest Common Subsequence)

March 27 2021

LCS LCS는 Longest Common Subsequence의 약자로 최장 공통 부분 문자열이다. [LCS(Longest Common Substring)]과 혼동해서는 안된다.

좌표 압축 (Coordinate Compression)

March 27 2021

좌표의 범위가 너무 큰 경우 인덱싱으로 좌표 사이 갭을 없애는 좌표압축 기법(Coordinate Compression)을 사용하여 문제를 해결할 수 있다. 세그먼트 트리와 같은 자료구조를 이용해서 쿼리당 $O(lgN)$의 시간 복잡도를 가지지만 좌표가 너무 큰 범위를 가지는 경우 ...

0-1 Knapsack problem

March 26 2021

Problem 도둑이 보석가게에 부피 W인 배낭을 매고 침입했다. 도둑은 매장에 진열된 보석의 크기 v와 가격 p을 알고 있다. 이때 도둑이 훔친 보석의 가격의 최대 합은 얼마인가?

Cycle Detection

March 11 2021

사이클 탐지기법은 dfs를 사용하는 방법과 union-find 방식이 있는데 여기서는 dfs를 사용한 방법을 소개하고자 한다.

0-1 BFS

March 11 2021

Problem $V$ 정점과 $E$ 간선들을 가지고 있는 그래프 $G$가 있다고 가정하자. 이 그래프의 간선들은 0과 1의 가중치를 가지고 있다. $source$ 로부터 가장 짧은 거리를 계산할 수 있는 효율적인 코드를 작성하라.

Union-Find

February 21 2021

Union-Find 이해 Union-Find(혹은 Disjoint Set)란, 여러개의 노드들을 집합으로 묶어주고 다시 노드들이 어떤 집합에 속하는지 확인할 수 있는 알고리즘이다.

Back to Top ↑

Codeforces

Codeforces Round 690 (Div.3)

April 10 2021

A. Favorite Sequence 일반적으로, 가장 왼쪽 요소는 모든 홀수 위치에 배치하고 가장 오른쪽 요소는 모든 짝수 위치에 배치한 후 왼쪽 포인터는 앞으로, 오른쪽 포인터는 하나씩 뒤로 이동 ```cpp #include using namespace std;

Codeforces Round 697 (Div.3)

April 09 2021

A. Odd Divisor 정수 $n$이 주어질 때 홀수인 수 $x$로 나누어 떨어지는지 확인하는 문제이다.

Back to Top ↑

Pytorch

python으로 CNN 바닥부터 구현하기

September 21 2022

Related 이전 포스트에서 MLP를 구현했고 이번에는 CNN을 구현하는 삽질을 진행했습니다. 여기서는 Conv2d의 구현에 대해서만 정리하려고 합니다. 밑바닥부터 구현하실때 도움이 되었으면 좋겠습니다.

Python으로 MLP 바닥부터 구현하기

July 04 2022

코딩테스트로 Python으로만 MLP를 구현하는 문제가 나왔던 적이 있습니다. 당시에 역전파 구현을 하지 못해 코딩테스트에서 떨어졌었고 완전히 바닥에서부터 구현해보고자 시작한 프로젝트입니다.

Pytorch layer 초기화 함수

December 31 2021

모델링을 하게되면 초기화를 신경쓰지 않게 되는데 어떤식으로 이루어지는지 잘 모르고 있었습니다. 그래서 Linear layer를 선언했을 때 weight와 bias를 어떻게 초기화하는지 알아보고자 합니다.

Back to Top ↑

Contest

AI Village Capture the Flag @ DEFCON31 후기

November 10 2023

AI 관련 CTF가 있는 줄은 몰랐는데 Kaggle에서 해당 대회가 열려 한번 참가하여 한 달간 풀어봤습니다. 대회에서 사용되는 Capture the Flag(CTF) 방식은 취약점을 통해 주최자가 숨겨둔 플래그를 찾아 문제를 해결할 수 있습니다. 이 대회는 27개의 문제로 이루어...

P2 MRC 대회 회고

November 15 2021

대회 목적 Open Domain에 해당하는 Wikipedia 문서를 불러와 Query에 답을 하는 Open Domain Question Answering(ODQA) 대회입니다. 저는 주어진 Query를 받고 Context내에서 답을 찾는 Reader 모델의 모델링을 맡았습니다.

P2 KLUE Relation Extraction(RE) 대회 회고

October 09 2021

대회 목적 이번 대회는 KLUE의 Relation Extraction Task를 수행을 평가합니다. 문장 내 단어의 관계를 알아내면 knowledge graph를 생성하는데 key역할을 하며 생성된 knowlege graph를 통해 QA나 Summarization과 같은 Tas...

P1 Image Classification 대회 회고

September 03 2021

프로젝트 목표 이번 대회는 인물 이미지를 통해 나이, 성별, 마스크 착용에 대해 총 18개의 클래스로 나누고 이를 예측하는 대회입니다. 저는 앙상블을 만들기 위해 적합한 모델을 찾고 다양한 방식을 적용하여 F1 score를 높이는 목표를 가지고 있었습니다.

스타트업 코딩 페스티벌 2021(스코페) 후기

March 28 2021

1차 대회 1차 대회의 문제는 총 6문제이고 각 스타트업에서 한 문제씩 출제한 것으로 보였습니다. 문제들은 전반적으로 쉬웠습니다. 1번 문제 : 문자열 2번 문제 : DP 3번 문제 : 구현 4번 문제 : 정렬 5번 문제 : BFS 6번 문제 : DP

Back to Top ↑

LeetCode

Back to Top ↑

paper

Back to Top ↑

github

Github Action 코드리뷰 봇 만들기(Gemini-1.5-flash)

October 16 2024

Github Action 설정 Github Action은 사용자가 원하는 트리거에 따라 워크플로우를 실행할 수 있는 CI(Continuous Integration) 도구입니다. 구글의 Gemini-1.5-flash 모델을 사용하여 Pull Request시 코드 변경사항에 대해 LL...

Github Action 정리

January 04 2022

CI/CD를 위한 도구로 jenkins, github action 등이 있는데 이 중 github action을 설정하고 pytest와 슬랙 메시지까지 전송해보는 것을 정리했습니다.

Back to Top ↑

data-engineer

ksqlDB: 실시간 데이터 처리 후 시각화까지

September 03 2024

ksqlDB ksqlDB는 Kafka Streams에 기반하는 SQL 엔진입니다. ksqlDB는 Kafka topic에 이벤트 스트리밍 애플리케이션을 구축할 수 있는 쿼리 계층을 제공합니다. Kafka Streams와 달리 ksqlDB는 SQL로 새로운 스트림을 생성하거나 Mate...

데이터 파이프라인 구축해보기

December 02 2022

Motivation 빅데이터를 지탱하는 기술을 읽다가 데이터 엔지니어링에 사용되는 플랫폼들을 전체 파이프라인으로 구축해보고 싶어서 이 사이드 프로젝트를 진행하게 되었습니다.

Back to Top ↑

nlp

Wordpiece Tokenizer

July 07 2023

Reference Wordpiece 토크나이저는 BERT를 사전학습할때 사용했던 토크나이저입니다. BPE(Byte-Pair Encoding) 토크나이저와 방식은 거의 똑같은데 단어를 합치는 부분이 다른점이 특징입니다.

Byte Pair Encoding

February 19 2023

Reference BPE 알고리즘에 대한 설명은 링크한 곳에 잘 설명되어 있습니다. 여기서는 참고한 곳의 내용을 바탕으로 직접 구현했습니다.

Back to Top ↑

jekyll

jekyll 마크다운과 maxjax 충돌 해결 방법

October 10 2021

Latex을 사용하게 될 때 수식의 아래첨자를 사용하기 위해 _를 사용하는 경우가 많습니다. 그러나 $$안에 _가 두 번 쓰이는 경우 마크다운 렌더링 때문에 _italic_되어 수식이 제대로 렌더링되지 않는 경우가 생깁니다. 이런 경우는 markdown 문법과 Latex의 문법...

Back to Top ↑

Ops

Kubernetes

May 15 2022

컨테이너 기반 배포 애플리케이션 배포 방식은 물리적인 컴퓨터에 OS와 APP을 설치하여 서비스하던 방식에서 가상화 배포 방식으로 변화했습니다. 가상화 방식은 가상머신 성능을 각각 관리하면서 자원 상황에 따라 조절할 수 있습니다. 그러나 가상머신마다 OS를 새로 설치해야 하고 용량 ...

Back to Top ↑

coursera

Back to Top ↑

airflow

Airflow task 디자인

February 09 2024

Apache Airflow 기반의 데이터 파이프라인 책의 내용 중 일부를 정리한 내용입니다.

Back to Top ↑