딥러닝 9

Shell file로 딥러닝 학습하기

딥러닝에는 다양한 하이퍼파라미터가 존재한다. 이때, Wandb의 Sweep을 사용하지 않고, 학습하고 싶은 경우에는 shell 파일을 통해 로그를 저장하면서 학습할 수 있다. 아래와 같이 learning rate, batch size, sequence length 등을 지정하고, 모델을 돌리게 된다면, 각 인자를 변환하면서 모델이 백그라운드로 실행되게 된다. for lr in 0.001 0.0001 0.00001 do for batch in 8 16 32 64 do for len in 64 128 256 512 do nohup python3 train.py --lr ${lr} --batch_size ${batch} --max_length ${len} &> logs/logs-${lr}-${batch}-${..

Python 2024.02.26

[Pytorch] LSTM(Long Short-Term Memory) 코드 구현

Contents LSTM (Long Short-Term Memory)은 RNN (Recurrent Neural Network)가 가지고 있는 장기 의존성 문제(long term dependency)를 해결하기 위해 제안된 모델이다. hidden state $h_t$와 cell state $c_t$로 구성되어 있으며, $h_{t-1}$은 t-1번째 Layer의 hidden state를 의미한다. $h_0$은 초기 hidden state를 의미하며, 0으로 설정한 후 학습을 진행한다. \[ \begin{equation} \begin{split} i_t & = \sigma(W_{ii} x_t + b_{ii} + W_{hi} h_{t-1} + b_{hi} ) \\ f_t & = \sigma ( W_{if} x_..

Python/Pytorch 2022.06.17

퍼셉트론(Perceptron)

1. 퍼셉트론(Perceptron) 초기의 인경신공망 모형이고 퍼셉트론이 동작하는 방식은 다음과 같다. 각 노드의 가중치와 입력치를 곱한 것을 모두 합한 값이 활성함수에 의해 판단되는데, 그 값이 임계치(보통 0)보다 크면 뉴런이 활성화되고 결과값으로 1을 출력한다. 뉴런이 활성화되지 않으면 결과값으로 -1을 출력한다. $ \Sigma_{i}^{n}{w_{i}x_{i}} \geq \theta \rightarrow y = 1 $ $ \Sigma_{i}^{n}{w_{i}x_{i}} < \theta \rightarrow y = 0 $ y 값이 threshold 인 $ \theta $ 을 기준으로 0, 1로 분류한다. $ b $(bias) 로 표기할 때도 있다. $ \Sigma_{i}^{n}{w_{i}x_{i}..

Deep Learning 2022.05.06

[Books] 오차역전파란? Backpropagation

오차 역전파는 딥러닝의 기초라고 할 수 있다. 이전까지 우리는 수치 미분을 통해 기울기를 구해 학습했지만, 이 방법은 매우 시간이 오래 걸린다. 그렇기에 딥러닝에서는 가중치의 기울기를 효율적으로 계산하는 오차역전파법(backpropagation)을 사용한다. 위와 같이 왼쪽에서 오른쪽으로 노드$^{\mathsf{node}}$에서 엣지$^{\mathsf{edge}}$를 거쳐 계산이 되는 방식을 순전파(forward propagaction)이라고 한다. 그 반대로 진행하는 것을 우리는 역전파라고 부른다. 역전파는 순전파와 달리 굵은 선을 표시하며 이 전파는 '국소적 미분'을 전달하고 아래의 수치는 미분 값을 의미한다. 여기서 '국소적 미분'을 전달하는 원리는 연쇄법칙(chain rule)에 따라 전달하게 된..

[short] Deep Neural Networks for YouTube Recommendations, Paul Covington (2016)

YouTube에는 워낙 방대한 자료와 새로운 영상의 업로드, 사용자의 행동의 sparse한 부분 등의 문제로 추천하기가 엄청 어렵다. 해당 논문에서는 최상의 영상을 추천해주기 위해 Deep Neural Networks를 사용했고, 모든 상황을 고려해 추천을 해주는 시스템을 구축했다. 사용한 데이터는 YouTube 앱 화면에서 손가락의 업/다운, 제품 내 설문조사, 사용자의 언어, 영상의 언어 등 모든 것을 고려해 input으로 집어넣고 3개의 Layer를 통과해 추천영상을 제공해준다. [Layer는 Linear + ReLU로 총 3겹을 쌓았다.] Layer를 겹겹이 쌓았을 때 성능이 개선되는 것을 볼 수 있다. 결론 딥러닝을 활용했지만 여전히 정확한 예측은 어렵다. 일부항목에서는 다른 machine-le..

[CS224N] Named Entity Recognition(NER)

NER 개체명 인식은 문장에서 Location, Person, Organization 등 개체명$^{Named\ Entity}$를 분류하는 방법론이다. 개체명 인식을 하기 위해서는 그 전에 전처리 과정을 해주어야 한다. input으로 text가 들어오면 sentence단위로 split을 해주는 과정이 필요하고, 그 후 tokenizing을 거치고 pos tagging을 해준 후 Named entity recognition을 진행할 수 있다. 아래와 같이 '우리', '아버지', '가방', '에', '들어간', '다' 로 토큰화 되었다고 해보자. 일반적으로 '가방'이라는 단어를 location으로 판단할 수는 없지만 NER에서는 문맥을 보고 결정하기 때문에 아래의 경우 '가방'을 Location으로 개체명을..

[CS231N] Optimization의 종류 - SGD부터 Adam까지

Contents Mini-batch SGD 1. Sample a batch of data 2. Forward prop it through the graph, get loss 3. Backprop to calculate the gradients 4. Update the parameters using the gradient 이런 경우에는 몇천만개의 데이터들을 learning rate($\eta$) 하나로 고정을 시키고 최적화를 시키는 것이 과연 좋은 것인가? 라는 물음을 할 수 있다. 아래와 같은 SGD의 약점은 시작을 해서 flatten 지점에서 넘어가지 못하고 local minimum에 빠져버린다. Momentum GD와 Momentum의 다른점은 어떤 것인가? gradient descent의 경우 $ ..

[Optimization] Gradient Descent

경사법 ( 경사 하강법 ) 신경망에서 최적의 매개변수를 학습 시에 찾아야 한다. 최적이란 손실 함수가 최솟값이 될 때의 매개변수 값이다. 하지만 매개변수의 공간이 광대하여 최솟값을 찾는데에 있어 어려움이 있기 때문에 경사하강법을 사용하여 최솟값을 찾으려고 한다. 하지만 그 기울기가 가리키는 곳에 정말 함수의 최솟값이 있는지 보장할 수 없다(안장점). 실제로 복잡한 함수에서는 기울기가 가리키는 방향에 최솟값이 없는 경우가 대부분이다. 경사법은 현 위치에서 기울어진 방향으로 일정 거리만큼 이동하는 것을 말한다. 그런 다음 이동한 곳에서 다시 기울기를 구하고, 또 기울어진 방향으로 나아가기를 반복한다. 이 방법은 특히 신경망 학습에 많이 사용된다. $x_{0} = x_{0} - \eta {\partial f ..

[CS231N] Neural Network Back-propagation

Backpropagation 이 왜 Neaural Network에서 중요할까? Backpropagation 은 어떤 함수의 gradient를 계산하는 방식이다. chain rule를 recursively( 재귀적으로 ) 적용을 하고, 이러한 계산 방식이 computational 하다고 할 수 있다. backpropagation을 하는 가장 주된 목적은 parameter를 updata하기 위함이다. parameter를 update 하면서 가장 최적의 parameter를 찾는 것이 궁극적인 목적이기 때문이다. 부수적으로는 학습한 NN을 시각화하고 해석하기 위함이다. NN 이라는 것은 하나의 함수라고 지칭할 수 있다. 만약 SVM을 이라면 convex optimization을 활용하여 단 한 번의 optimu..

반응형