게시글
질문&답변
GoogleNet Inception 모듈
안녕하세요!Inception Block을 구성하는 각 Conv2d, MaxPool2d은 입력되는 Feature 크기와 출력되는 Feature 크기가 동일하도록 Kernel Size, Stride, Padding이 설정되어 있습니다MaxPool2d의 Kernel Size = 3, Stride =1, Padding=1Conv2d의 Kernel Size = 3, Stride =1, Padding=1으로 구성되어 있습니다!따라서 Concatenation하게되는 Conv2d가 출력하는 Feature의 shape과 MaxPool2d가 출력하는 Feature의 shape들은 서로 동일한 것입니다.아래는 Inception3a Layer의 예시를 가져온 것입니다!(사진)
- 1
- 2
- 29
질문&답변
Batch Normalization 효과
안녕하세요!좋은 질문 감사합니다!개인적인 사정으로 답변이 많이 늦어져서 죄송합니다 ㅠㅠ아래에 첨부한 설명 참고 부탁드립니다!(사진)(사진)(사진)(사진)(사진)(사진)(사진)(사진)
- 1
- 2
- 40
질문&답변
Layer Norm이 언어모델에 적합한 이유
안녕하세요 좋은 질문 감사합니다!여러 이유가 있지만 Batch Norm 대신에 Layer Norm을 NLP나 Sequence 데이터셋 모델링에서 사용하는 가장 큰 이유는 Batch Norm은 Batch을 묶어서 평균을 내는데 NLP에서는 문장의 길이가 가변적이기 때문입니다.따라서 평균 혹은 표준편차를 계산할때, 분모로 나눠줘야 하는 N을 mini-batch을 구성하는 문장들 중에서 어떤 문장의 길이를 기준으로 설정할 것인가가 명확하지 않습니다.부연 설명 드리자면, Normalization을 하기 위해서 평균 = sum(x_i) / N, 표준편차 = sqrt ( sum(x_i - 평균)^2 / N )에 대한 계산이 필요한데, Batch-Norm을 Mini-Batch을 통틀어서 평균과 표준편차를 계산합니다.따라서 길이가 가장 긴 문장의 길이를 N으로 둬서 평균과 표준편차를 계산한다고 가정하면, 동일한 데이터 샘플에 대해서도 해당 데이터 샘플이 속해있는 mini-batch에서 가장 긴 문장의 길이 N이 다르면 계산되는 평균과 표준편차 값도 달라지는 문제가 있습니다.하지만 Layer Norm은 각 데이터 샘플에 대해서 개별적으로 평균과 표준편차가 계산되므로 해당 문제를 겪지 않게 되는 셈입니다.글로 이해하는데 헷갈릴 수 있으므로, 첨부한 이미지도 참고부탁드립니다!(사진)
- 1
- 1
- 38
질문&답변
9-2 fully connected NN
안녕하세요!좋은 질문 감사합니다!네 Sigmoid을 통과한 logit은 각각 0~1 사이의 값을 가지지만 logit 값들의 합은 1이 되지 않습니다!따라서 예측 확률값으로 변환하기 위해서 Softmax 함수를 사용했습니다!
- 1
- 1
- 45
질문&답변
Mini-batch Gradient Descent computation time 질문
안녕하세요!좋은 질문해주셔서 또 한번 감사드립니다!네 정확합니다!만약에 GPU에 올릴 수 있는 최대 데이터양이 100개라면 최대로 한번에 병렬 처리할 수 있는 데이터양도 100개가 한계입니다. 따라서 500개의 데이터 샘플들을 처리하기 위해서는 100개로 구성된 미니배치 5개를 차례대로 순회해야합니다.반면에 GPU에 올릴 수 있는 데이터양 (즉 100개) 에 한해서는 샘플 하나하나씩 차례대로 계산하지 않아도 되기 때문에 Mini-batch을 구성하는 데이터 수에 대해서는 연산 소요 시간이 비례하지 않습니다!
- 1
- 2
- 60
질문&답변
Huber Loss에 대한 질문
안녕하세요! 강의를 재밌게 봐주시고 계셔서 다행이고 저도 보람되네요!Question:왜 전미분이 1번만 된다는 게 단점이 된다는 것인지 이해가 잘 되지 않습니다.Answer: 넵, 47번째 참고 사항 슬라이드에서 설명드리게 되는데,미분가능함”은 해당 함수가 Smooth (매끄럽다)고 Well-behaved (얌전하다)는 의미를 가집니다.즉, 함수의 출력값이 입력값의 변화에 따라 “매끄럽고 부드럽게” 변한다는 의미입니다.매끄럽고 부드러울수록 함수를 extrapolate, interpolate하기 수월해집니다.딥러닝 모델도 어떻게 보면 함수를 잘 근사하도록 학습하는 것이기 때문에매끄럽고 부드러운 함수일 수록 학습 과정에서 보지 못한 input data space에 대해서 interpolate 혹은 extrapolate할 수 있게 됩니다!따라서, 전미분이 1번만 가능한 Huber Loss을 사용하는 것은 "경사하강에 필요한 미분값을 구하는데는 전혀 지장이 없습니다.하지만 (여러번 미분 가능한) 매끄러운 손실 함수는 딥러닝 모델이 학습하는 Loss Surface가 더 매끄러워지게 되는 셈이고 더 안정적인 학습에 도움을 줍니다! (사진)Loss Surface에 대한 일러스트레이션으로 위 그림을 참고하시면 되겠습니다!왼쪽은 덜 매끄러운 Loss surface, 오른쪽은 더 매끄로운 Loss Surface로 보시면 되겠습니다!
- 1
- 2
- 97
질문&답변
Batch size 가 극단적으로 작은 경우 (예를들어 batch_size =1) Normalization 적용 방안
안녕하세요!변정현입니다!강의가 도움이 되고 있다니 저도 많이 뿌듯하네요 ㅎㅎ좋은 질문 감사합니다~질문에 대한 답변은 아래 첨부 파일로 상세하게 설명드리겠습니다!요약하자면,Q: 하나의 batch 에 단일 샘플만 적용하는 경우를 study 하고 있는데요, Batch-Normalization 을 적용했을 경우 오히려 학습이 잘 안 되는 것 같다:A: 네 맞습니다! Mini-batch의 크기가 작으면 분모로 나눠주게 되는 표준편차가 매우 작은 값을 가지게 됩니다. 분모 값이 매우 작을 때는 분모 값이 조금만 바껴도 나눠진 값이 심하게 요동칩니다.따라서 normalize된 값은 심하게 요동치며 이로 인해서 학습 과정도 불안정해집니다. Q: "batch size 가 극단적으로 작은 경우에 Normalization layer 을 적용 안하는게 더 좋을 수 있나요? 혹은 설명해 주신 table 에 나와 있는 것 처럼 Group Normalization layer 나 Instance Normalization을 적용하는 것이 맞는가요?"A: 네 맞습니다! Mini-batch의 크기가 작을 때 Batch-Normalization 을 적용하면 더 잘 안되는 이유(사진)(사진) Group Normalization에 대한 부연 설명(사진)(사진)
- 2
- 1
- 120
질문&답변
Normalization 질문
안녕하세요!좋은 질문 감사합니다!아래에 첨부한 그림 참고 부탁드립니다!그리고 x_nhwc은 scalar 값입니다! X 텐서의 n, h, w, c index에 해당되는 요소를 의미합니다!즉, n번째 데이터 샘플의, c번째 channel의, h 번째 height, w번째 width에 해당되는 값을 의미합니다!(사진)(사진)(사진)
- 1
- 2
- 154
질문&답변
Section 7 [Activation Function의 종류] Softmax logit 분포와 Entropy 질문이 있습니다
안녕하세요!네 맞습니다! 예리하게 파악을 해주셔서 감사합니다! ㅎㅎ제가 만드는 과정에서 실수가 있었네요! 정정된 슬라이드는 다음과 같습니다!(사진)
- 1
- 1
- 92
질문&답변
Section 3 [실습] PyTorch로 구현해보는 Loss Function의 Cross Entropy 구현 관련하여 질문이 있습니다.
안녕하세요 변정현입니다!네 말씀해주신 것처럼 예측값이 이미 SoftMax 함수로 0~1 사이의 값과 합이 1로 normalize되어 있어서 CE_loss에 있는 SoftMax 함수 (Exponential 취한 후 Exponential의 합으로 나누는 것) 를 별도로 또 취할 필요가 없습니다!제가 앞서서 정의한 예측값을 재활용하는 과정에서 혼선이 있었네요 ㅎㅎ잘 발견해주셔서 감사합니다!
- 1
- 1
- 147