1. 계산 그래프 오차역전파를 이해하기 위해 계산 그래프를 사용한다. 계산 그래프의 이점은 다음과 같다. 전체 계산이 아무리 복잡해도, 각 노드에서는 단순한 계산에 집중하여 문제를 단순화할 수 있다. 중간 계산 결과를 보관할 수 있다. 역전파를 통해 미분을 효율적으로 계산할 수 있다. 2. 연쇄법칙 역전파는 국소적인 미분을 계산 그래프의 오른쪽에서 왼쪽으로 전달하면서 이루어진다. 국소적 미분을 전달하는 원리는 연쇄법칙(chain rule)에 따른 것이다. 연쇄법칙을 설명하려면 합성 함수부터 시작해야 한다. 합성 함수란 여러 함수로 구성된 함수이다. 예를들어 $y=(x+y)^2$는 $z=t^2$와 $t=x+y$ 두 개의 함수가 합성된 형태이다. 연쇄법칙은 합성 함수의 미분에 대한 성질이며, 합성 함수의 미..
1. 학습 알고리즘 신경망에는 매개변수(가중치, 편향)이 있고, 이를 데이터에 적응하도록 조정하는 과정을 학습이라고 한다. 학습은 다음과 같은 4단계로 수행된다. 1단계 : 미니배치 : 학습 데이터의 일부를 무작위로 가져온다. 선별된 데이터를 미니배치라고 한다. 2단계 : 기울기 산출 : 미니배치의 손실 함수 값을 줄이기 위해, 손실 함수에 대한 각 매개변수의 기울기를 구한다. 3단계 : 매개변수 갱신 : 가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다. 4단계 : 1~3단계를 반복한다. 무작위 확률적으로 골라낸 데이터에 대해 수행하는 경사 하강법이므로, 이를 확률적 경사 하강법이라고 부른다. 2. 그라디언트를 구하는 방법 수치 미분 방식(아주 작은 차분으로 미분)으로 각각의 매개변수의 손실 함수에..
1. 기울기 손실 함수에 대한 모든 매개 변수의 편미분을 담은 벡터를 기울기(gradient)라고 한다. 기울기는 무엇을 의미할까? 위 그림은 기울기에 음수를 붙인 벡터를 시각화한 것이다. 기울기는 함수의 가장 낮은 장소(최솟값)을 가리킨다. 또한 가장 낮은 곳에서 멀어질수록 화살표의 크기가 커진다. 사실 화살표가 반드시 함수의 가장 낮은 장소를 가리킨다고 할 수 없다. 더 정확히 말하자면, 기울기가 가리키는 쪽은 각 장소에서 함수의 출력값을 가장 크게 줄이는 방향이다. 2. 경사 하강법 경사법은 현 위치에서 기울어진 방향으로 일정 거리만큼 이동하는 방법이다. 그 다음 이동을 마친 곳에서 마찬가지로 기울기를 구하고 또 일정 거리만큼 이동하기를 반복한다. 이렇게 하여 함수의 값을 점차 줄이는 것이 경사법이..
1. 배치(batch) 처리 배치 처리는 컴퓨터로 계산할 때 큰 이점을 준다. 두 가지 이유가 있다. 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리하게끔 최적화 되어있다. 느린 I/O를 통해 데이터를 읽는 횟수가 줄어, 빠른 CPU나 GPU로 순수 계산을 수행하는 비율이 높아진다. 2. 데이터 주도 학습 전통적인 기계학습에선 사람이 특징을 설계했지만, 신경망은 이미지에 포함된 중요한 특징까지도 기계가 스스로 학습한다. 그러므로 딥러닝을 종단간(end-to-end) 기계학습이라고 한다. 처음부터 끝까지 데이터에서 목표 결과를 사람의 개입 없이 얻는다는 뜻이다. 3. 손실 함수 신경망 학습에선 현재의 상태를 하나의 지표로 표현한다. 이 지표를 가장 좋게 만드는 가중치 매개변수 값을 탐색한다. 신경..
1. 신경망 앞장에서, AND, OR 게이트의 진리표를 보면 인간이 직접 적절한 가중치를 설정해야 했다. 신경망은 적절한 가중치 값을 데이터로부터 자동으로 학습한다. 본 장에선 신경망의 개요와, 신경망이 입력 데이터를 식별하는 처리 과정을 알아본다. 2. 활성화 함수 퍼셉트론의 동작을 간단히 요약하면 아래와 같다. $h(x)$와 같이 입력 신호의 총합을 출력 신호로 변환하는 함수를 활성화 함수라고 한다. 현재 $h(x)$는 0을 경계로 출력이 바뀌는 계단 함수이다. 그렇기에 퍼셉트론은 활성화 함수로 계단 함수를 이용한다. 다른 활성화 함수를 사용하는 것은 신경망으로 나아가는 길이다. 신경망에서 활성화 함수로 자주 이용했던 시그모이드 함수는 아래와 같다. 3. 시그모이드 함수와 계단 함수의 차이 가장 먼저..
1. 퍼셉트론의 정의 퍼셉트론(perceptron)은 1957년에 고안된 알고리즘이다. 퍼셉트론은 신경망의 기원이다. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 퍼셉트론 신호는 1 또는 0의 두 가지 값을 가진다. 위 그림은 입력으로 2개으 신호를 받은 퍼셉트론이다. 그림의 원을 뉴런 혹은 노드라고 부른다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 뜻이다. 뉴런에서 보내온 신호의 총합이 임계값을 넘어설 때만 1을 출력한다. 이를 뉴런이 활성화 되었다고 표현한다. 2. 퍼셉트론의 한계 퍼셉트론의 매개변수 값(가중치, 임계값)을 적절히 정하면 AND, NAND, OR 게이트를 구현할 수 있다. 하지만 두 입력값 중..
https://02vec.tistory.com/2 트랜스포머 논문 이해하기 트랜스포머 인공지능 분야 전반에 걸쳐 범용적으로 사용되고 있는 아키텍처입니다. 본 리뷰는 Attention Is All You Need 논문에서 제안하는 트랜스포머 아키텍처의 구조, 동작 원리, 구현 디테일에 포 02vec.tistory.com 파이토치로 트랜스포머를 구현해봅시다. 리뷰 할 코드는 독일어를 영어로 번역하는 트랜스포머를 구현합니다. 먼저 torchtext와 spaCy를 설치합니다. torchtext는 각종 자연어 처리 도구를 제공하며, spaCy는 자연어 문장을 자동으로 토큰화 해주는 기능 등을 제공합니다. spaCy에서 영어 문장과 독일어 문장을 토큰화하는 tokenizer를 불러옵니다. "I am a gradua..
트랜스포머 인공지능 분야 전반에 걸쳐 범용적으로 사용되고 있는 아키텍처입니다. 본 리뷰는 Attention Is All You Need 논문에서 제안하는 트랜스포머 아키텍처의 구조, 동작 원리, 구현 디테일에 포커스를 둡니다. 1. Abstract & Introduction 본 논문이 발표되기 이전에는 복잡한 CNN 또는 RNN로 구성된 인코더-디코더 구조의 모델이 기계 번역 태스크에서 우위를 점하고 있었습니다. SOTA는 인코더-디코더에 어텐션 매커니즘을 적용한 모델이었다고 합니다. 본 논문은 CNN과 RNN을 사용하지 않고 오직 어텐션 매커니즘으로만 이루어진 트랜스포머라는 아키텍처를 제안합니다. 트랜스포머의 이러한 구성은 계산을 더욱 병렬적으로 처리할 수 있게 하여 모델의 학습 시간을 매우 많이 줄였..
평균 이동(Mean Shift)은 K-평균과 유사하게 중심을 군집의 중심으로 지속적으로 움직이면서 군집화를 수행합니다. 하지만 K-평균이 소속된 데이터의 평균 거리 중심으로 중심을 이동시키는 데 반해, 평균 이동은 데이터가 모여있는 밀도가 가장 높은 곳으로 중심을 이동시킵니다. 평균 이동 군집화는 데이터의 분포도를 기반으로 군집의 중심점을 찾습니다. 정확히는, 확률 밀도 함수가 피크(peak)인 지점을 군집의 중심점으로 설정합니다. 일반적으로 주어진 모델의 확률 밀도 함수를 찾기 위해서 KDE(Kernel Density Estimation)를 이용합니다. KDE는 커널(kernel) 함수를 통해 어떤 변수의 확률 밀도 함수를 추정하는 대표적인 방법입니다. 관측된 데이터 각각에 커널 함수를 적용한 값을 모..
앞의 붓꽃 데이터 세트의 경우 결괏값에 품종을 뜻하는 타깃 레이블이 있었고, 군집화 결과를 이 레이블과 비교하여 군집화가 얼마나 잘 수행됐는지를 평가할 수 있었습니다. 하지만 대부분의 군집화 데이터 세트는 이렇게 비교할만한 타깃 레이블을 가지고 있지 않습니다. 군집화는 분류(Classification)과 유사해 보일 수 있으나 많이 다릅니다. 데이터 내에 숨어 있는 별도의 그룹을 찾아서 의미를 부여하거나, 같은 분류값이라도 그 안에서 더 세분화된 군집화를 진행할 수 있습니다. 또한. 서로 다른 분류 값의 데이터도 더 넓은 군집화 레벨화 등의 영역을 가집니다. 그렇다면 군집화가 잘 됐는지 평가할 수 있는 지표는 무엇이 있을까요? 비지도학습의 특성상 어떠한 지표라도 정확한 성능을 평가하긴 어렵습니다. 그럼에..