딥러닝 #Deep learning 12

[논문리뷰] Transformer (Attention Is All You Need)

해당 글은 wikidocs의 16 - 01 트랜스포머(Transformer)에 대한 글을 정리한 글입니다. 기존 Seq2Seq 모델의 한계Seq2Seq2 모델은 위와 같은 모습을 가진다. 인코더 파트에서는 입력 문장의 모든 단어들을 순차적으로 입력받고, 마지막에 단어들로부터 얻은 모든 정보들을 압축해서 하나의 벡터로 만든다. 이 벡터를 컨텍스트 벡터(Context Vector)라 부른다. 이 Context Vector는 입력 문장에 대한 문맥적인 정보를 담게 되는데 디코더는 해당 벡터를 받아 번역된 단어를 한 개씩 순차적으로 출력한다. 한 단어에 대한 계산은 앞에 단어에 대한 계산이 끝나야 가능하니 정보의 흐름에 병목 현상(Bottleneck)이 일어날 수 있다는 문제점이 있다. 입력 문장의 길이가 짧던..

지수 가중 평균(Exponentially weighted averages)

해당 글은 유튜브 채널(https://www.youtube.com/@Deeplearningai) 의 Improving Deep Neural Networks 강의를 정리한 글입니다. Exponentially weighted averages(지수 가중 평균)경사 하강법보다 빠른 몇 가지 최적화 알고리즘이 존재한다. 그 알고리즘들을 이해하기 위해서는 먼저 지수 가중 평균(Exponentially weighted averages)을 이해해야한다.  (통계학에서는 지수 가중 이동 평균이라고도 부른다.)지수 가중 평균(=지수 이동 평균)이란, 데이터의 이동 평균을 구할 때, 오래된 데이터가 미치는 영향을 지수적으로 감쇠(exponential decay) 하도록 만들어 주는 방법이다.  지수 가중 평균의 예위의 그래..

경사하강법의 세 종류(BGD, SGD, MGD)

경사하강법(Gradient Descent Algorithm)경사 하강법은 최적화 알고리즘 중 하나로, 손실 함수(Loss Function)의 값을 최소화하는 파라미터[가중치(weight)와 편향(bias)]를 구하기 위해 손실함수에 대한 각 매개변수의 기울기(Gradient)를 이용하는 방법이다.이 때 기울기가 0인 지점인 손실함수의 값이 최저인 곳이므로 그 지점에 도달하기위해 매개변수는 기울기의 반대방향으로 움직여야 한다. 그래서 경사하강법에서 미분값의 -만큼 빼주는 값으로 가중치를 업데이트하는 것이다.위에선 예시로 가중치에 대해서만 얘기했으나 다른 매개변수인 편향(Bias)에 대해서도 동일하게 적용된다. 결국 최적해에 도달할때까지 매개변수 업데이트를 반복(Iteration)하는 것인데 하나의 반복에서..

Classification: 붓꽃(Iris) 데이터 분석하기

해당 분석글은 https://liz09045.tistory.com/94 글을 토대로 작성되었습니다. 분류(Classification) 문제로 유명한 붓꽃(Iris) 데이터셋을 분석해보자. 붓꽃(Iris)은 위와 같이 3가지의 종류(Setosa, Versicolor, Virginica)를 가지고 있다. 이제 샘플 데이터를 불러와보자. 사이키런(Sklearn)에는 머신 러닝을 쉽게 배울 수 있게 샘플 데이터셋들을 가지고 있다. 그 중에 붓꽃(Iris) 데이터셋도 있으니 이를 로드해준다. 붓꽃 데이터셋은 자료형이 딕셔너리(Dictionary)니 먼저 Key 값을 확인해주자. [ 파이썬에는 딕셔너리라 하는 자료형이 있다. 단어 뜻이 '사전'인 것처럼, 사전처럼 이해하면 된다. "flower" 이 라는 단어에 "..

Train data | Test data | Validation data 차이

평가 데이터(Test data)의 필요성 기계도 사람이 학습과정을 거쳐 능력이 향상되듯이, 반드시 훈련(Training) 과정을 거쳐 성능을 쌓아 올린 후, 그것을 평가하는 단계로 모델 완성을 해줘야 한다. Train set 와 Test set이 필요한 이유가 여기에 있다. '학습/훈련 ⇒ 평가' 는 필수적이다. 위 데이터셋은 여러 증상에 따른 코로나 감염여부에 관한 것이다. 우리는 사람들의 증상에 따라 코로나 감염 여부를 예측하는 모델을 만들고 싶은 거니 맨 오른쪽 초록부분이 우리가 알고 싶은(예측하고 싶은) 목표가 된다. 이 목표에 영향을 미치는 기침, 발열 등의 특징들은 피처(feature)다. 위 데이터는 해당 증상을 가지고 있으면 1, 없으면 0으로 표기하고 있으며 코로나 양성여부의 경우 양성일..

과대적합(Overfitting)과 과소적합(Underfitting)

과소적합(Underfitting) 모델이 너무 단순해서(충분히 복잡하지가 않아서) 데이터의 내재된 구조/패턴을 학습하지 못할 때 발생한다.머신에게 공을 학습시켜야 한다고 가정해보자. 먼저 축구공, 야구공, 농구공 들의 데이터를 보여주면서 "이런 동그란게 공이야" 라고 가르치게 될 것이다.  이렇게 학습이 될 경우, 테스트 과정에서(새로운 데이터) 사과같이 동근 과일이나 보름달도 공으로 예측할 수 있지만, 학습 때 보여주지 않은 다른 수많은 동근 공(테니스공, 배구공, 골프공 등)들도 어쨌든 동그라니 공으로 맞게 예측하게 되는 것이다. 예측 곡선이 학습데이터를 제대로 학습하지 못해, 패턴을 반영하지도 못하니 훈련 데이터에서도 오차가 크고, 동근 애들은 공이 아닐지라도 공이라 예측해버리니 테스트 데이터에서의..

배치 사이즈(batch size) | 에포크(epoch) | 반복(iteration) 차이

기계는 다음과 같은 과정을 통해 학습한다.1. 임의의 파라미터(가중치($w$))를 정한다.2. 이 가중치에 대한 손실값을 구하고 손실 함수(Loss function)의 기울기(Gradient)를 구한다.3. 경사하강법(Gradient Descent)을 이용해 파라미터를 업데이트 한다.4. 업데이트 된 지점에서 새 손실 함수의 기울기를 구한다.5. 3번 다시 실시6. 파라미터가 최적값에 도달하면 파라미터 업데이트를 중지한다.    학습 과정에서의 문제보통 기계를 학습 시킬 때 사용하는 데이터의 양은 매우 많으며 이렇게 많은 데이터를 모두 한꺼번에 모델에 태우게 되면, 컴퓨터가 버티질 못한다. 데이터 크기가 너무 크면 메모리가 부족해진다.한번의 학습에 계산되어야할 파리미터 수가 지나치게 많아져 학습 속도가 ..

손실함수(Loss function)

위와 같은 데이터가 있다고 해보자.  각 학생의 공부시간과 성적이 적히 데이터인데, 공부시간에 따른 성적을 예측하는 데이터다.  모델을 정의하기 앞서 y 라는 정답지의 유형이 범주형인지 실수형인지를 따져봐야한다. 위의 예시는 실수형태이니 풀어야 하는 문제가 회귀(Regression) 문제라고 인식할 수 있어야 한다.  회귀문제를 푼다고 정의를 했으니 이제 모델을 정의해야한다. 예시 데이터에서는 피처가 하나뿐이니 단순 선형 회귀 모델에 해당한다. $y = wx + b$ 머신러닝/딥런닝은 가장 정확히 예측할 수 있는, 최적의 매개변숫값을 찾는 작업이다. 모델을 정의했으니 이제 남은 건, 어떻게, 어떤 방법을 이용해 최적의(optimal) 매개변수 값을 찾을지다. (optimal : 데이터를 가장 잘 표현하는..

최적화와 경사하강법(Gradient Descent)

'머신러닝은 최적화 과정이다' 라고 얘기할 정도로 머신러닝은 최적화(Optimization)를 굉장히 많이 사용한다.고등학교 수학수업에서 배웠듯이, 최적화 문제에는 주로 미분을 사용하여 푼다. (미분을 통해 최소점과 최대점을 구할 수 있으니) 머신러닝과 딥러닝에서 최적화란 손실 함수(Loss Function)의 값을 최소화하는 파라미터를 구하는 과정이다. [손실함수란 예측값과 실제값의 차이를 비교하는 함수다]  해당 표는 6월 성적과 9월 성적을 토대로 수능 성적을 예측하는 문제에 대한 머신 러닝 모델의 예측값$(y ̂)$과 실제값$(y)$을 나타낸다. 6월 성적과 9월 성적 각각이 가지는 가중치는 동일하게 0.5 로 두었다. 이렇게 두 개의 파라미터의 값이 0.5 일시의 오차가 큰데, 이런 오차를 최소..

다층 퍼셉트론(MLP: Multi Layer Perceptron)과 활성화 함수(Activation function)

저번에 퍼셉트론에 대해서 설명했었다. 위처럼 은닉층이 없는, 훈련 데이터를 받아들이는 입력층(Input layer)과 결과를 도출하는 출력층(Output layer), 이렇게 두가지의 층으로만 이루어져있는 퍼셉트론을 단층 퍼셉트론이라고 한다. XOR 문제를 예시로, 단층퍼셉트론은 선형으로 분리가 가능하지 않은 상황은 처리가 불가능했다. XOR 문제와 같은 선형분리가 불가능한 상황을 층을 더한 다층 퍼셉트론을 이용하여 해결할 수 있게 되었다. 퍼셉트론에 대한 설명은 아내 링크를 참조해주세요. 인공신경망(ANN: Artificial Neural Network)과 퍼셉트론(Perceptrons)인간은 뇌를 통해 학습을 하니까, 기계에도 뇌와 비슷한 구조의 무언가를 만들어 주면 되지 않을까? 라는 질문을 토대로..