전체 글 thumbnail list 6. 배치, 미니배치, SGD 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 이번에는 신경망을 학습할 때 데이터를 입력하는 단위에 대해서 알아본다. 크게 세 가지로 나눈다. 배치(batch) - 가지고있는 훈련 데이터셋을 한 번에 전부 모델에 입력하는 방식. 비교적 입력 데이터 수가 적은 머신러닝의 경우 배치 방식이 가능할 수도 있지만, 무수한 양의 파라미터를 학습시키기 위해 다량의 데이터를 요구하는 딥러닝의 경우에는 배치 방식을 사용하면 메모리가 터지고 학습 시간이 매우 오래걸린다. 또한 온라인 학습처럼 학습함과 동시에 서비스를 제공하여야 하는 경우에는 데이터가 지속적으로 추가되고 그에 맞추어 즉시 결과를 산출해야 하므로 배치 방식이 사용이 불가능하다. 미니 배치(Mini-batch) - 배치 방식이 딥.. 5. 경사하강법, 역전파 알고리즘 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 신경망의 학습 목표 신경망의 학습 목표는 loss function의 값을 최소화 하는 것이다. loss는 신경망이 내놓은 예측값과 target 값의 차이로 주어지기 때문에 신경망의 weights를 변경해가면서 해당 모델이 target을 잘 맞출 수 있도록 해야한다. 위 그림의 x축을 weights, y축을 loss라고 생각하면 우리는 모델의 weights를 잘 변경해가면서 최대한 global minimum에 가까운 loss값을 가지도록 하는 것이 최종 목표가 되는 것이다. weight vector의 차원이 낮다면 단순 미분으로 global minimum을 찾는것이 가능하다. 하지만 deep learning의 파라미터 개수는 어마무.. 4. 시그모이드와 크로스엔트로피, 양수출력문제, 죽은 ReLU Sigmoid와 Cross Entropy Loss의 관계 일반적으로 딥러닝을 이용하여 이진분류 문제를 해결할 때 출력의 마지막 단에 Sigmoid layer를 추가하고, 그 다음 Cross entropy loss 함수를 적용한다. Backpropagation은 Loss function을 시작으로 network를 순차적으로 미분하는 과정이다. 그렇다면 끝에서 두 번째 layer인 Sigmoid도 어쨌거나 미분의 대상이 된다. 하지만 전 게시글에서 알아보았듯이 Sigmoid는 지수형태로 주어지므로 Sigmoid의 입력값의 절댓값이 클 때 Gradient가 0에 가까워지는 Gradient saturation이 발생한다. 따라서 Activation function으로 sigmoid를 사용하는 것은 적절치 못한데.. Optuna document 읽어보기 모델 성능 향상을 위해 optuna 쓸 일이 제법 있었는데 이제껏 공식 document를 읽어본 적이 없었다. 그저 구글링으로 코드 짜맞추기를 했을 뿐 그래서 오늘은 autoML 기법 중 하나인 optuna의 document를 읽어보고 이해한 내용을 작성할 것이다. Optuna란? 2019년 타쿠야 아키바 등에 의해 개발된 하이퍼파라미터 최적화 라이브러리로 여러 종류의 sampler를 제공한다. Grid, random search에 비해 월등히 빠른 탐색속도를 가지며 머신러닝 뿐 아니라 딥러닝(TF, Pytorch)에도 유연하게 적용 가능하다. 간단 동작원리 Optuna tutorial에 나와있는 대로 아주 기본적인 예제를 통해 optuna의 기능을 익혀보고자 한다. !pip install optuna .. 3. 활성화 함수 (Activation function) 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 이번에는 Activation functions(활성화 함수)에 대해서 알아본다. 계단함수 (step function) $f(x) = \begin{cases}1, & \text{if } x \geq 0 \\0, & \text{otherwise} \end{cases}$ Step function은 딥러닝 개발 극 초창기 퍼셉트론에서 사용되었다고 한다. 하지만 현대 딥러닝에서는 사용이 불가능한 방식이다. 역전파가 개발된 이후에는 역전파 알고리즘을 사용하기 위해 반드시 미분가능한 함수만을 사용하여야 하는데 계단함수는 모든 구간에서 기울기가 0인 함수이기 때문이다. 시그모이드 (Sigmoid) $f(x)=\frac{1}{1+e^{-x}}$ .. 2. 분류와 회귀 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 분류 (Classification) 분류는 데이터가 입력되었을 때 해당 데이터의 클래스를 예측하는 문제이다. 분류되는 클래스의 개수가 2개일 때는 특별히 이진 분류(binary classification), 3개 이상일 때는 다중 분류(multiclass classification)라고 부른다. 분류모델의 출력 결과는 특정 클래스의 이름 혹은 확률로 표현될 수 있다. 전자의 경우 모델이 산출한 값 중 가장 큰 인덱스의 클래스를 최종 클래스로 예측하는 것이다. 후자의 경우는 모델이 산출한 값에 sigmoid(이진분류) 혹은 softmax(다중분류)를 취하여 해당 데이터가 가능한 클래스들에 속할 확률을 표현한다. 산출값이 가장 높은 .. 1. 순방향 신경망 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! 순방향 신경망 (Feedforward neural network) 위 그림에서 각 동그라미를 퍼셉트론(인공뉴런)이라 부르고, 여러 퍼셉트론이 층을 이루는 구조를 순방향 신경망(feed forward neural network)라고 부른다. Input layer에 입력된 값들이 hidden layer로 전달되고, 마지막 Output layer를 통해 최종 값이 산출된다. Input layer에서 데이터를 입력받고 Hidden layer에서 입력된 데이터의 특징을 추출하며 그 결과를 Output layer를 통해 출력하는 것이다. Fully connected FC(Fully connected) layer란 현재 층의 모든 뉴런과 이전.. K means, 계층 군집화를 이용한 팀원 짜기 내가 작년 동아리에 가입할 당시 회장님이 군집화를 통해 팀원을 짰었다. 이번 학기 신입부원 팀을 어떻게 짤지 고민하다가 작년 회장님이 당시 사용했던 설문지를 공유해주셔서 (ㄳ ㅎㅎ) 그 방법론을 사용하여 군집화 실습을 해보기로 했다. 큰 틀은 그대로 가져가되 약간의 베리에이션을 추가하고 싶어서 설문지의 질문을 다수 교체했고, K means에 더하여 계층 군집화도 사용해 봤다. 라이브러리 불러오기 import pandas as pd import numpy as np from sklearn.cluster import KMeans import matplotlib.pyplot as plt import seaborn as sns from sklearn.decomposition import PCA !pip inst.. 이전 1 ··· 5 6 7 8 9 다음