[Transformer] Attention Is All You Need (1)
·
Paper Review
Attention Is All You Need해당 글과 그림의 출처는 lllustrated Transformer과 lllustrated Transformer(번역)을 참고하였습니다.이 글에서는 Attention을 활용한 모델인 Transformer에 대해 다룹니다. 우선 이 모델의 핵심을 정리한다면, multi-head self-attention을 이용해 sequential computation을 줄여 더 많은 부분을 병렬 처리가 가능하게 만들면서 동시에 더 많은 단어들 간 dependency를 모델링 한다는 것입니다. A High-Level Look전체적인 흐름을 먼저 살펴보겠습니다. 기계번역 모델은 특정 언어로 된 문장을 입력 받아 다른 언어로 번역한 문장을 출력합니다. 그 모델을 열어 보면, Enc..
Parameter Estimation (모수 추정), 가능도 (Likelihood), MLE (Maximum Likelihood Estimation)
·
ML & DL/기초 이론
Parameter Estimation 통계학에서 중요한 개념 중 하나로, 모집단을 분석하기에는 많은 비용이 발생하므로 부분(표본) 집단을 통해 모집단의 특성을 파악하는 것입니다. 모집단의 일부인 표본에 통계 분석 방법을 적용해 모수를 추정하는 방법을 모수 추정이라 한다. 모수란 모집단의 특성을 나타내는 수치로 평균, 분산, 상관계수 등이 있습니다. 일반적으로 모수 추정의 목적은 관측된 데이터의 실제 확률 분포 \(p(X|\theta)\)를 가장 잘 근사하는 수학적 모형을 찾는 것입니다. 이와 같이 근사화한 모델을 사용한 이유는 실제 데이터의 확률 분포 또는 모수를 정확히 알 수 없기 때문입니다. 따라서 임의의 확률 모형 \(p(x|\cdot)\)을 가정한 뒤, 이 모형이 데이터를 가장 잘 설명하는 모수를..
Probability Model(확률 모형), Random Variable(확률 변수)
·
ML & DL/기초 이론
Probability Model, 확률 모형 확률 모형은 어떤 사건이 발생할 가능성(확률)을 수학적으로 만든 방법입니다. 이는 확률 변수(random variable)라는 것을 이용하여 데이터 분포를 수학적으로 정의하는 방법라고도 합니다. 보통 미리 정해진 확률 분포 함수 또는 확률 밀도 함수를 사용하며, 이 함수들의 계수를 모수(parameter)라고 부릅니다. 모수(parameter)는 \(\theta\)라고 표기하기도 하며, 이는 확률 모형을 정의하는 데 중요한 역할을 하는 값으로 요약 통계량(Descriptive Measure)라고 부릅니다. 예를 들어 가장 널리 쓰이는 확률 모형의 하나인 가우시안 정규 분포(Gaussian normal distribution)는 다음과 같은 수식으로 확률 밀도 ..
[프로그래머스] / [Level 2] / [Python] 메뉴 리뉴얼
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import defaultdict from itertools import combinations as C def solution(orders, course): answer = [] for co in course: count_dict = defaultdict(int) for order in orders: order = sorted(order) for o in list(..
[프로그래머스] / [Level 2] / [Python 오픈채팅방
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import defaultdict def solution(record): answer = [] new = [] id_nic = defaultdict(str) for rec in record: j = rec.split(' ') if j[0] == 'Enter': id_nic[j[1]] = j[2] answer.append(f'{j[1]} 님이 들어왔습니다.') elif..
1 x 1 Convolution ?
·
ML & DL/Deep Learning
1 x 1 Convolution AlexNet과 VGGNet의 큰 파라미터를 줄이기 위해 GoogLeNet에서는 1x1 Convolution을 사용했습니다. 1x1 Convolution은 이후 다양한 모델에서 연산량을 줄이기 위해 사용되어 이 방법이 매우 효과적임을 증명합니다. 입력 데이터의 채널(Channel) 수 조절 위 그림과 같은 (64 * 64 * 192) 블럭에 (1 * 1 * 192) 블럭을 Convolution 하게 되면 (64 * 64)개의 픽셀(원소) 각각의 192개의 채널(숫자)와 필터(1*1)의 192개의 채널(숫자) 사이에서 요소간 곱셈을 하게 됩니다. 정리하자면, 필요한 필터는 (1 * 1 * #channel * #filter)가 되며, #channel은 입력 블럭의 channe..
Regularization: Overfitting을 해결하는 방법들
·
ML & DL/기초 이론
앞의 포스트에서 Overfitting과 Underfitting에 대해 설명하였습니다. 여기서 Overfitting이 발생하지 않도록 미리 예방하는 기법들이 다양하게 있는데 차례대로 설명하겠습니다. Regularization(정규화)을 설명하기 앞서, Normalization도 정규화라고 불리기 때문에 개념을 정확히 구분해야 합니다. Normalization은 데이터의 값을 조정하는 작업이며, Regularization은 모델의 복잡도를 조정하는 작업입니다. Regularization Regularization(정규화)은 모델에 제약(penalty)를 주어 복잡도를 줄이는 방법입니다. 모델의 복잡도는 모델이 가지는 파라미터의 수에 비례하며, Regularization은 이 파라미터의 값이 커지는 것을 제한..
Overfitting & Underfitting
·
ML & DL/기초 이론
Overfitting & Underfitting 우리가 모델을 학습할 때, 파라미터(parameter)를 수정(update)하여 학습 데이터에 맞는 모델을 만드는 것이 목표입니다. 즉 일반화(Generalization) 성능을 높이는 것을 목표로 합니다. 위 그림과 같이 Train Loss는 낮지만 Valid Loss는 커지고 있습니다. 이런 상황을 일반화 성능이 안좋다고 말하며, 당연히 Train Loss 자체가 낮아도 이 일반화 성능이 안좋다고 말합니다. 위 그림처럼 너무 많이 학습 데이터에만 집중하다 보면 훈련 데이터에는 잘 맞지만 새로운 데이터에는 맞지 않은 과적합(Overfitting)이 일어날 수 있습니다. 반대로, 모델이 너무 단순하거나 학습 데이터가 너무 작다면 학습 데이터를 제대로 설명하..
욱근욱
개미는 오늘도 열심히 일을하네