악성채팅 탐지 시스템 구현
목적
문제 정의의 중요성
Serving Basic
모델 개발 프로세스
Overview
Image augmentation
Overview
경량화의 목적
이번 데이터셋 구축을 진행하면서 klue/bert-base처럼 pretraining한 모델을 업로드해보는 경험이 필요하다고 생각하게 되어 실행에 옮겼습니다.
과제 정의
관계 추출 관련 과제의 개요
데이터 구축 프로세스
가이드라인 유형
국내 언어 데이터의 구축 프로젝트
원시 데이터 정의
인공지능 모델 개발을 위한 데이터
데이터 제작의 중요성
Phrase Retrieval in Open-Domain Qeustion Answering
Closed-book Question Answering
Definition of Bias
Introduction to ODQA
Passage Retrieval and Similarity Search
Introduction to Passage Retrieval
Introduction to Dense Embedding
Generation-based MRC
Extraction-based MRC
Introduction to MRC
Recent Trends
Attention is all you need No more RNN or CNN modules Attention만으로 sequence 입력, 출력이 가능하다.
Seq2Seq Model
Types fo RNNs 각 타임스텝에서 들어오는 입력벡터 $X_t$와 이전 state에서 계산된 $h_{t-1}$을 입력으로 받아서 현재 타임스텝에서의 $h_t$를 출력으로 내어주는 구조를 가지고 있다. 모듈 A가 재귀적으로 호출되는 구조를 가지고 있다. 왼쪽의 그림을 ...
Long Short-Term Memory (LSTM)
Word Embedding이란, 자연어가 단어들을 정보의 기본 단위로 해서 이런 단어들의 sequence라 볼때, 각 단어들을 특정한 차원으로 이루어진 공간상의 한 점 혹은 그 점의 좌표를 나타내는 벡터로 변환해주는 기법이다.
자연어 처리는 기본적으로 컴퓨터가 주어진 단어나 문장, 보다 더 긴 문단이나 글을 이해하는 Natural Language Understanding(NLU)가 있고 이런 자연어를 상황에 따라 적절히 생성할 수 있는 Natural Language Generation(NLG) 두 ...
현재 NLP는 Transformer가 주도하고 그 이전에는 RNN과 같이 Recurrent한 모델이 주도했지만 그 이전에는 단어 및 문서를 숫자 형태로 나타내는 Bag-of Words 기법을 정리한다.
Recurrent Neural Networks
Intorduction
Neural Networks Neural Networks are function approximators that stack affine transformations followed by nonlinear transforms.
Generative Models
Convolution Continuous convolution $(f * g)(t) = \int f(\tau)g(t-\tau)d\tau = \int f(t-\tau)g(t)d\tau$ Discrete convolution ...
통계적 모델링 적절한 가정 위에서 확률분포를 추정(inference)하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표입니다. 그러나 유한개의 데이터만 관찰해서 모집단의 분포를 정확하게 알아내는 것은 불가능하므로, 근사적으로 확률분포를 추정해야 합니다. ...
시퀀스 데이터 소리, 문자열, 주가 등의 데이터를 시퀀스(sequence) 데이터로 분류한다. 시퀀스 데이터는 독립동등분포(Independent and Identically Distributed, i.i.d.)가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 ...
딥러닝에서 확률론이 왜 필요한가요? 머신러닝은 어떤 방식에서든지 결국 예측을 수행해야 합니다. 예를들어, 강화학습 방식에서도 에이전트가 할 수 있는 행동들 중에서 보상을 가장 많이 받을 수 있는 확률을 고려해야 합니다. 머신러닝에서 사용하는 손실함수(loss functio...
미분 함수 f의 주어진 점(x,f(x))에서의 미분을 통해 접선의 기울기를 구할 수 있다. 접선의 기울기는 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있습니다. 미분값을 더하면 경사상승법(gradient ascent)라 하며 극댓값의 위치를 구할 때...
Convolution 신호처리에서 정말 많이 등장하는 컨볼루션 연산입니다. 기계학습에서도 컨볼루션을 사용하여 학습을 하게 됩니다. 아래 식은 각 뉴련들이 선형모델과 활성함수로 모두 연결된(fully connected) 구조를 가졌습니다. $h_i = \...
A. Potions 현재 체력 H에서 $P_i$만큼 회복시킬 수 있는 포션을 먹을 때 체력이 X만큼 차면서 X에 가장 가까운 i를 찾는 문제이다.
A. Adjacent Squares (H, W) 크기의 행렬이 주어졌을 때 위치 (R, C)에서 인접한 원소의 수를 출력하는 문제이다. H와 W가 1인 경우를 예외처리해주면 쉽게 풀 수 있다.
A. 10yen Stamp 10엔 스탬프를 모아서 현재 $X$에서 목표치 $Y$를 달성할 때까지 몇 번을 봉투에 넣어야 하는지 계산하는 문제이다. $X$가 $Y$보다 큰 경우 0을 출력해주는 예외처리만 해주면 된다. ```cpp #include #include #include ...
Last Card $K$개의 카드가 있고 1부터 $N$번호를 가진 사람이 있을 때 $A$번호부터 카드를 주게되면 맨 마지막 카드를 받는 사람의 번호가 무엇인지 찾는 문제이다.
A. New Generation ABC
A. Your First Judge
A. kcal
A. Maxi-Buying
A. Rock-paper-scissors
A. Chinchirorin
A. Tiny Arithmetic Sequence
A. UFO Invasion
A. Square Inequality
A. Div
A. I Scream
A. Difference Max
A. Health M Death
위상 정렬 이해
원소 $N$개인 배열의 일부 원소를 골라 증가하는 부분 수열을 이룰 때, 가장 긴 증가하는 부분 수열의 길이를 구하는 코드를 작성하라
트라이 이해
세그먼트 트리란?
LCS LCS는 Longest Common Subsequence의 약자로 최장 공통 부분 문자열이다. [LCS(Longest Common Substring)]과 혼동해서는 안된다.
좌표의 범위가 너무 큰 경우 인덱싱으로 좌표 사이 갭을 없애는 좌표압축 기법(Coordinate Compression)을 사용하여 문제를 해결할 수 있다. 세그먼트 트리와 같은 자료구조를 이용해서 쿼리당 $O(lgN)$의 시간 복잡도를 가지지만 좌표가 너무 큰 범위를 가지는 경우 ...
Problem 도둑이 보석가게에 부피 W인 배낭을 매고 침입했다. 도둑은 매장에 진열된 보석의 크기 v와 가격 p을 알고 있다. 이때 도둑이 훔친 보석의 가격의 최대 합은 얼마인가?
모듈러 거듭제곱법 이해
LCA 이해
카라츠바 알고리즘 이해
사이클 탐지기법은 dfs를 사용하는 방법과 union-find 방식이 있는데 여기서는 dfs를 사용한 방법을 소개하고자 한다.
Problem $V$ 정점과 $E$ 간선들을 가지고 있는 그래프 $G$가 있다고 가정하자. 이 그래프의 간선들은 0과 1의 가중치를 가지고 있다. $source$ 로부터 가장 짧은 거리를 계산할 수 있는 효율적인 코드를 작성하라.
Union-Find 이해 Union-Find(혹은 Disjoint Set)란, 여러개의 노드들을 집합으로 묶어주고 다시 노드들이 어떤 집합에 속하는지 확인할 수 있는 알고리즘이다.
A. Number of Apartments
A. Floor Number
A. ABC String
A. Favorite Sequence 일반적으로, 가장 왼쪽 요소는 모든 홀수 위치에 배치하고 가장 오른쪽 요소는 모든 짝수 위치에 배치한 후 왼쪽 포인터는 앞으로, 오른쪽 포인터는 하나씩 뒤로 이동 ```cpp #include using namespace std;
A. Special Permutation
A. Boring Apartments
A. Dense Array
A. Odd Divisor 정수 $n$이 주어질 때 홀수인 수 $x$로 나누어 떨어지는지 확인하는 문제이다.
Objective 앞에서 구현한 LayerNorm, MultiHeadAttention, GELU를 사용하고 이전에 구현해둔 Linear, Dropout, Softmax 클래스를 사용하여 Transformer 클래스를 구현하여 테스트해봅니다.
Transformer 트랜스포머(Transformer)는 2017년에 등장한 모델입니다. Attention is all you need 논문은 트랜스포머 모델에 대해 설명하고 있으며 이후 BERT, GPT라는 새로운 모델을 탄생시키는 배경이 됩니다.
Related RNN에 이어서 LSTM을 구현했습니다.
Related 이전 포스트에서 CNN을 구현했고 이번에는 RNN을 구현하는 과정을 정리하려고 합니다.
Related 이전 포스트에서 MLP를 구현했고 이번에는 CNN을 구현하는 삽질을 진행했습니다. 여기서는 Conv2d의 구현에 대해서만 정리하려고 합니다. 밑바닥부터 구현하실때 도움이 되었으면 좋겠습니다.
코딩테스트로 Python으로만 MLP를 구현하는 문제가 나왔던 적이 있습니다. 당시에 역전파 구현을 하지 못해 코딩테스트에서 떨어졌었고 완전히 바닥에서부터 구현해보고자 시작한 프로젝트입니다.
모델링을 하게되면 초기화를 신경쓰지 않게 되는데 어떤식으로 이루어지는지 잘 모르고 있었습니다. 그래서 Linear layer를 선언했을 때 weight와 bias를 어떻게 초기화하는지 알아보고자 합니다.
AI 관련 CTF가 있는 줄은 몰랐는데 Kaggle에서 해당 대회가 열려 한번 참가하여 한 달간 풀어봤습니다. 대회에서 사용되는 Capture the Flag(CTF) 방식은 취약점을 통해 주최자가 숨겨둔 플래그를 찾아 문제를 해결할 수 있습니다. 이 대회는 27개의 문제로 이루어...
대회 목적 Open Domain에 해당하는 Wikipedia 문서를 불러와 Query에 답을 하는 Open Domain Question Answering(ODQA) 대회입니다. 저는 주어진 Query를 받고 Context내에서 답을 찾는 Reader 모델의 모델링을 맡았습니다.
대회 목적 이번 대회는 KLUE의 Relation Extraction Task를 수행을 평가합니다. 문장 내 단어의 관계를 알아내면 knowledge graph를 생성하는데 key역할을 하며 생성된 knowlege graph를 통해 QA나 Summarization과 같은 Tas...
프로젝트 목표 이번 대회는 인물 이미지를 통해 나이, 성별, 마스크 착용에 대해 총 18개의 클래스로 나누고 이를 예측하는 대회입니다. 저는 앙상블을 만들기 위해 적합한 모델을 찾고 다양한 방식을 적용하여 F1 score를 높이는 목표를 가지고 있었습니다.
1차 대회 1차 대회의 문제는 총 6문제이고 각 스타트업에서 한 문제씩 출제한 것으로 보였습니다. 문제들은 전반적으로 쉬웠습니다. 1번 문제 : 문자열 2번 문제 : DP 3번 문제 : 구현 4번 문제 : 정렬 5번 문제 : BFS 6번 문제 : DP
A. Largest Odd Number in String
A. Minimum Distance to the Target Element
A.Check if Binary String Has at Most One Segment of Ones
A. Count Items Matching a Rule
모두의연구소에서 논문저자가 직접 논문을 리뷰해주는 세미나가 열렸습니다. 주제가 재밌어 보여 발표를 듣고 논문을 다시 읽어보았습니다.
Astract
Github Action 설정 Github Action은 사용자가 원하는 트리거에 따라 워크플로우를 실행할 수 있는 CI(Continuous Integration) 도구입니다. 구글의 Gemini-1.5-flash 모델을 사용하여 Pull Request시 코드 변경사항에 대해 LL...
CI/CD를 위한 도구로 jenkins, github action 등이 있는데 이 중 github action을 설정하고 pytest와 슬랙 메시지까지 전송해보는 것을 정리했습니다.
ksqlDB ksqlDB는 Kafka Streams에 기반하는 SQL 엔진입니다. ksqlDB는 Kafka topic에 이벤트 스트리밍 애플리케이션을 구축할 수 있는 쿼리 계층을 제공합니다. Kafka Streams와 달리 ksqlDB는 SQL로 새로운 스트림을 생성하거나 Mate...
Motivation 빅데이터를 지탱하는 기술을 읽다가 데이터 엔지니어링에 사용되는 플랫폼들을 전체 파이프라인으로 구축해보고 싶어서 이 사이드 프로젝트를 진행하게 되었습니다.
Reference Wordpiece 토크나이저는 BERT를 사전학습할때 사용했던 토크나이저입니다. BPE(Byte-Pair Encoding) 토크나이저와 방식은 거의 똑같은데 단어를 합치는 부분이 다른점이 특징입니다.
Reference BPE 알고리즘에 대한 설명은 링크한 곳에 잘 설명되어 있습니다. 여기서는 참고한 곳의 내용을 바탕으로 직접 구현했습니다.
Latex을 사용하게 될 때 수식의 아래첨자를 사용하기 위해 _를 사용하는 경우가 많습니다. 그러나 $$안에 _가 두 번 쓰이는 경우 마크다운 렌더링 때문에 _italic_되어 수식이 제대로 렌더링되지 않는 경우가 생깁니다. 이런 경우는 markdown 문법과 Latex의 문법...
컨테이너 기반 배포 애플리케이션 배포 방식은 물리적인 컴퓨터에 OS와 APP을 설치하여 서비스하던 방식에서 가상화 배포 방식으로 변화했습니다. 가상화 방식은 가상머신 성능을 각각 관리하면서 자원 상황에 따라 조절할 수 있습니다. 그러나 가상머신마다 OS를 새로 설치해야 하고 용량 ...
Finetuning Large Language Models - Deeplearning.ai
Apache Airflow 기반의 데이터 파이프라인 책의 내용 중 일부를 정리한 내용입니다.