반응형 딥러닝30 [NLP] Beam search decoding , BLEU score 이번 포스팅에서는 크게 두 가지 개념을 다룰 것이다. 먼저 Seq2seq with Attention 등의 자연어 생성 모델에서 test time에서 더 좋은 품질의 결과를 얻을 수 있도록 하는 기법인 Beam search decoding에 대해 알아볼 것이며, 그 과정에서 Greedy decoding과 Exhaustive decoding도 함께 볼 것이다. 그 후, 자연어 생성 모델의 정확도 지표인 BLEU score에 대해 살펴볼 것이며, 그 과정에서 Precision, Recall, F-measure도 함께 볼 것이다. Greedy decoding test time에서는 다음 단어를 생성하는 과정을 반복하여 순차적으로 문장을 생성한다. 매 time step마다 가장 높은 확률을 가지는 단어 하나를 택.. 2021. 9. 12. [Pytorch] Multi-GPU 파라미터 개수가 많은 경우 하나의 GPU로는 연산을 감당할 수 없다. 오늘은 여러개의 GPU를 사용하여 병렬적으로 학습하는 방법에 대해 알아볼 것이다. 1. Multi-GPU Multi-GPU에 학습을 분산하는 방법에는ⓛ Model parallel(모델 나누기)와 ② Data parallel(데이터 나누기)가 있다. ■ Model parallel Model parallel은 model내의 layer들을 여러 GPU에 올리는 방법이다. 아래의 Alexnet이 가장 유명한 Model parallel이다. C1부터 두개의 GPU를 사용하여 parameter를 주고받으며 병렬적으로 학습하고 있는 모습을 볼 수 있다. Model parallel로 학습을 진행할 경우 아래 그림의 첫번째 상황을 조심해야 한다. 두번.. 2021. 8. 21. weight를 갱신할 때 기울기에 왜 Learning rate를 곱할까? Optimizer를 공부하면서 Learning rate에 대해 의문이 들었다. Gradient자체가 얼마나 Loss에 영향을 주는지를 의미하니까 어느 방향으로 내려가야하는지 뿐만아니라 어느 정도로 업데이트 해야할지에 대한 정보도 담고있다고 생각했는데 왜 또 보폭을 설정해주는 지 궁금했다. 다시 생각해봐야할 것은 gradient라는게 weight 한 단위가 변할 때 loss에 대한 영향력을 나타낼 뿐, 그것이 극값의 위치에 도달할 수 있는 크기를 의미하지 않는다는 것이다. 아래 예시를 보자. weight를 기울기만큼 이동하면 방향은 왼쪽으로 잘 가고 있지만 너무 많이 이동해서 계속 (1, 1)과 (-1, 1)로만 갱신되는 모습을 볼 수 있다. 즉, 기울기는 방향에 대한 정보는 잘 전달하지만 극값에 다가가기.. 2021. 8. 15. 33단계) 뉴턴 방법 최적화 자동화 , 2차 미분 자동 계산 이전 단계에서 고차 미분을 가능하게 DeZero를 확장시켰으므로 이번 단계에서는 실제로 2차 미분을 계산한 후, 뉴턴방법을 이용한 최적화를 해볼 것이다. 1. 2차 미분 계산하기 import numpy as np from dezero import Variable def f(x): y = x**4 - 2 * x**2 return y x = Variable(np.array(2.0)) y = f(x) #첫 번째 역전파 진행 y.backward(create_graph=True) print(x.grad) #variabe(24.0) #두 번째 역전파 진행 gx = x.grad gx.backward() print(x.grad) #variable(68.0) gx.backward()를 하여 gx.grad = None이니.. 2021. 7. 9. 이전 1 2 3 4 5 ··· 8 다음 728x90 반응형