전체 글

0. 등장배경 Random Forest를 아주 간단하게 설명하자면, Decision Tree가 모여서 더 좋은 결과를 내는 모델이다. 자세하게 말하자면 Random Forest는 CART모델의 단점을 극복하기 위해 제시된 모델로서, Decision Tree 하나로는 training data에 너무 쉽게 overfitting 되고, 이에 여러 개의 Decision Tree를 사용하여 다수결을 사용하는 방식으로 보완하고자 하였다. 이렇게 단일 모델 여러 개를 모아서 더 좋은 판단을 하는 방법론은 `Model Ensemble`이라고 한다. 이때 단순 DT를 모은 것이 아니다. 왜냐면 같은 데이터에 대해서 만들어진 DT는 같은 결과를 출력하게 된다. 이에 다양성을 추가해 주기 위하여 2가지 기법을 사용하였다. ..
· ML & DL/NLP
0. 등장배경 Transformer: 트랜스포머는 2017년 구글이 발표한 "Attention in all you need"에서 발표된 모델로, Seq2Seq의 구조인 인코더 디코더 형태를 따르면서도 Attention으로만 구현된 모델이다. 이 모델은 RNN구조를 사용하지 않았음에도 번역 성능에서도 RNN보다 우수한 성능을 보여줬으며 지금까지도 다양한 분야에서 사용된다. RNN, LSTM, Seq2Seq 등의 언어모델들은 연속적인 입력에 대한 모델링을 개선하여 자연어처리 분야에서 많은 성과를 가져왔으며, Seq2Seq 등의 모델들은 시간에 의존적인 입력시퀀스에 따라 hidden state를 생성하여 입력을 처리하는 구조이며, 가변적인 입/출력을 처리하는데 효과적이었다. 그러나 고정된 크기의 context..
텐서란 데이터의 배열(array)을 의미한다. 1. 텐서의 연산 1-1. 사칙연산 텐서의 사칙연산은 단순하게 원소 단위로 연산하는 것을 의미한다. 다음과 같이 같은 행, 열에 있는 원소들끼리 사칙연산을 수행하면 된다. 1-1-1. 사칙연산 코드 tensor_a = torch.tensor([[1, -1], [2, 3]]) tensor_b = torch.tensor([[2, -2] ,[3, 1]]) print('덧셈') print("a+b : \n", tensor_a + tensor_b) print("torch.add(a,b) : \n", torch.add(tensor_a, tensor_b)) print('뺄셈') print("a-b : \n", tensor_a - tensor_b) print("torch...
오늘은 다양한 데이터 증강 기법들에 대하여 간단하게 정리하였다. 일반적으로 데이터가 충분하지 않다면 과적합이 일어나기 때문에 충분한 양의 데이터를 확보하는 것은 중요하다. 그러나 더 이상 새로운 데이터를 얻을 수 없는 경우, 데이터 증강기법등을 사용해 볼 수 있다. 다만 데이터 증강을 진행할 때 함부로 데이터를 변형하여 증폭시키면 안되고, 해당 데이터의 도메인을 잘 고려해서 처리해야 한다. 예를 들어 객체 인식을 하고 있는데, 이미지를 크롭 하였는데 해당 영역에 객체가 없거나 숫자 6을 돌려서 9로 만들어버리는 등 문제가 생길 수도 있으므로 적절한 기법을 이용해야 한다. 이미지 데이터 증강 기본적으로 이미지 데이터 증강 기법에는 `Resize:사이즈조절`,`Rotation:회전`,`Flipping:뒤집기..
모델에서 최적화의 목표는 손실함수(Loss function)의 값을 최소로 만들어줄 수 있는 가중치 Weight를 효율적으로 찾는 것이라고 여러 번 말했었다. $$ w^* = \arg\min_w L(w) $$ 이러한 최적화 알고리즘 중 경사하강법, 스토케스틱 경사하강법, 미니배치 경사하강법을 이전에 알아봤었다. Gradient Descent: 경사하강법 딥러닝에서 손실 함수의 값이 최소가 되도록 모델의 파라미터를 조정하는 최적화 알고리즘에 대하여 정리해 봤다. 우선 최적화알고리즘에 쓰이는 경사하강법을 알기 전에 미분에 대하여 먼저 changsroad.tistory.com 이번에는 경사하강법을 발전시킨 다양한 옵티마이저들을 알아보겠다. 1. Gradient Descent 손실함수의 기울기를 계산하여, 기울..
1. Weight Initialization 신경망의 주목적은 손실을 최소화하는 것이며 이를 위해서는 파라미터 최적화가 필수적이다. 이를 위해 경사하강법, 미니배치경사하강법 등 최적화 기법을 배웠었는데, 그 기법들을 사용하며 계산되는 가중치도 최적화기법이 존재한다. 이를 알아보도록 하자. 가중치 초기화, Weight Initialization을 제대로 하지 않으면, 기울기 소실 혹은 학습시간이 엄청 오래 걸리는 등 모델 학습이 효율적으로 진행되지 않는다. 가중치가 매우 높거나, 작게 초기화되면 일반적으로 사용하는 활성화 함수인 sigmoid나 relu를 사용하였을 때 기울기가 0에 가까워지게 되기 때문에 기울기가 천천히 변하며 학습에 오랜 시간이 걸리게 되고 기울기 소실도 발생한다. 또한 각 활성화 함수..
이번시간에는 모델 성능과 관련된 여러 가지 문제점 및 해결법등에 대하여 알아보도록 하겠다. 1. 과적합과 과소적합 모델 훈련과정에서 학습데이터의 오차가 일반화 오차에 비해서 현격하게 낮아지는 현상을 Overfitting(과적합)이라고 부르고, 학습데이터의 오차가 매우 큰, 정확히 예측하지 못할 경우 Underfitting(과소적합)되었다고 부른다. 제일 왼쪽 그림과 같이 모델이 너무 간단하여 예측자체를 못하는 그래프가 Underfit. 제일 오른쪽 그림과 같이 모델이 너무 복잡하여 학습데이터셋에만 딱 맞는 그래프를 Overfit. 가운데 그림처럼 모델이 적당하게 구성되어 train, test 셋에서 모두 성능이 좋은 경우를 가장 이상적인 학습이라고 본다. 이러한 underfitting과 overfitti..
창빵맨
Let's be Developers