묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
9-2 fully connected NN
여기서 네트워크를 구성할 때 맨 마지막에 sigmoid를 태운 후에 마지막에 또 Softmax를 태우는데, 이렇게 할 거면 애초부터 네트워크의 마지막단을 sigmoid가 아닌 softmax를 태우면 되는 거 아닌가요?왜 sigmoid를 거친 후에 softmax를 태워야 하는 것인지 알 수 있을까요?
-
해결됨딥러닝을 활용한 자연어 처리 (NLP) 과정 (기초부터 ChatGPT/생성 모델까지)
transformer 훈련 마친 모델 공유 가능할까요?
강사님, 혹시 transformer 훈련 마친 모델 공유 가능할까요?pt-en en-kr 강의중에 언급하신 버젼colab에서 직접 돌려보다가 런타임이 계속 끊겨서 실패하다 요청드립니다ㅠ 덕분에 nlp에 많은 도움을 받고 있습니다. 감사합니다 :)
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Mini-batch Gradient Descent computation time 질문
안녕하세요 선생님시간과 체력이 더 많았으면 좋겠다는 생각이 들 정도로 강의를 너무 재밌게 보고 있습니다Mini batch Gradient Descent 이론 편에서 Mini batch Size에 비례하지 않는다는 설명을 보았는데요.물론 병렬처리를 하기 때문에 정비례하지 않겠지만 GPU에 올릴 수 있는 최대 데이터양이 100개라고 가정한다면 미니배치를 200, 300, .. 이런 식으로 키운다면 미니 배치크기에 따라 비례하는 것은 맞지 않나요?혹시 제가 잘못 생각하고 있다면 말씀해주세요 감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Huber Loss에 대한 질문
안녕하세요?: 선생님강의 정말 재밌게 잘 보고 있습니다.강의 내용 중에 Huber Loss는 전미분이 한 번밖에 되지 않는다는 단점을 언급해주셨는데요Gradient Descent를 적용할 때는 weight에 대한 편미분만 적용하기 때문에 역전파 시에는 무관한 거 아닐까요?따라서 Epoch를 2 이상의 숫자를 두고 학습하는데 전혀 지장이 없는 거 아닌가요?왜 전미분이 1번만 된다는 게 단점이 된다는 것인지 이해가 잘 되지 않습니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Batch size 가 극단적으로 작은 경우 (예를들어 batch_size =1) Normalization 적용 방안
강사님, 본 강의 들으면서 정말 많은 도움을 받고 있습니다. normalization 에 대해서 이렇게 상세하게 설명해 준 온라인 강의는 본 적이 없네요 🙂 CNN 을 기반으로 하되 모델 파라메터도 엄청 크고, 데이터셋 크기도 매우 큰 경우, 예를 들어 3D Unet 을 구성해서 3차원의 고해상도 (256 x 256 x 256) 이미지를 input 과 output 으로 사용하다보니 GPU 메모리를 너무 많이 잡아먹어서 batch 에 복수의 샘플을 적용하지 못하고 하나의 batch 에 단일 샘플만 적용하는 경우를 study 하고 있는데요, BatchNormalization 을 적용했을 경우 오히려 학습이 잘 안 되는 것 같아서 Normalization layer 를 야예 제거한 후 모델 학습 진행 중이었습니다. 경험적으로 했던 것이었지만 본 강의를 보다 보니 그 이유가 조금 이해가 되기도 하는데요, 이와 같이 batch size 가 극단적으로 작은 경우에 Normalization layer 을 적용 안하는게 더 좋을 수 있나요? 혹은 설명해 주신 table 에 나와 있는 것 처럼 Group Normalization layer 나 Instance Normalization을 적용하는 것이 개념적으로 더 나은 방법일까요? (설명을 들었을 때는 Group Normalization 을 적용하는 것이 필요한 상황으로 이해가 되기도 하는데.. 제가 이해한 것이 맞는지 확인 부탁드립니다 ^^;) 그리고 Group Normalization 에서 "Group" 의 의미가 무엇인지 잘 와닿지가 않아서 (Batch 나 Width, Height, Sample Number 이외에 그룹이 될 수 있는 경우가 무엇인지가 잘 이해가 되지 않습니다.) ... 요 부분에 대해서 좀 더 설명해 주시면 감사드리겠습니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Normalization 질문
안녕하세요, 수업 설명 감사드립니다. cnn이 아닌 일반적인 fully connected NN (multi-layer perceptron) 에서 혹시 batch/instance/layer normalization 을 어떻게 계산하는지 설명을 부탁드려도 될까요 (그림으로 표현해 주시면 더 좋을거 같습니다.)MLP에서라면 small c가 특정 hidden layer의 node/unit에 대응될거 같고 large C가 layer 전체를 표현할거 같은데, H,W는 무엇인지 이해가 잘 되지 않습니다. 특히, MLP에서 instance normalization의 평균/분산을 구할 수가 있을지 궁금합니다 (단일 값 하나일거 같은데..)강사님께서는 어떻게 생각하시는지 알려주시면 감사드리며, 제가 잘못 이해한 부분이 있으면 코멘트 부탁드리겠습니다. 추가로 하나만 더 질문드리고 싶습니다.강의안에서 x_nhwc는 벡터일까요? 아니면 scalar 값일까요? Normalization의 경우에 feature간 (예, 인풋 변수) 평균도 구하는지, element-wise로 구하는지 궁금해서 여쭤봅니다.바쁘실텐데 시간내주셔서 미리 감사드립니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 7 [Activation Function의 종류] Softmax logit 분포와 Entropy 질문이 있습니다
안녕하세요 선생님해당 강의 마지막 참고사항: what is entropy 부분에서 Temperature가 낮을수록 softmax logit의 분포가 쏠리면 Entropy가 감소하게 되는 것이 아닌지 궁금합니다! 확인해주셔서 감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3 [실습] PyTorch로 구현해보는 Loss Function의 Cross Entropy 구현 관련하여 질문이 있습니다.
안녕하세요 선생님,batch_size = 16 n_class = 10 def generate_classification(batch_size=16, n_class=10): pred = torch.nn.Softmax()(torch.rand(batch_size, n_class)) ground_truth = torch.argmax(torch.rand(batch_size, n_class), dim=1) return pred, ground_truth def CE_loss(pred, label): loss = 0. exp_pred = torch.exp(pred) # 이 부분 관련 질문이 있습니다. for batch_i in range(len(pred)): for j in range(len(pred[0])): if j == label[batch_i]: print(pred[0], j) loss = loss + torch.log(exp_pred[batch_i][j] / torch.sum(exp_pred, axis=1)[batch_i]) return -loss / len(pred)CE loss를 구현하는 과정에서 exp_pred = torch.exp(pred) 행이 왜 필요한 것인지 궁금합니다!exp를 취해주는 이유는 모델의 출력값 logits에 exp를 적용해 각 클래스에 대한 예측값을 양수로 변환한다고 알고 있는데generate_classification위에서 이미 softmax를 취해서 확률분포로 변환해주기 때문에 음수 값은 나오지 않는데 왜 exp를 적용해주어야 하는지 모르겠어서 여쭤봅니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3의 [이론] Regression task의 Loss: L1, L2, Huber, Log Cosh Loss "미분가능"관련 에서 질문이 있습니다.
안녕하세요 선생님!Section 3의 [이론] Regression task의 Loss: L1, L2, Huber, Log Cosh Loss 에서 질문이 있습니다."미분 가능"에 대해서 궁금한 점이 있는데,MAE loss처럼 0에서 미분이 불가능 한 경우에는 gradient를 계산할 수 없는데 어떻게 해당 loss를 사용할 수 있는 것인가요?또 Huber loss는 한 번만 전 구간 한번만 미분가능하고,Log Cosh loss는 전 구간 2번 이상 미분가능하다고 말씀해주셨는데한 번만 미분 가능한 것보다 2번 이상 미분가능한 것의 장점이 무엇인가요?확인해주셔서 감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 15 실습 중, lstm 클래스의 forward 함수 질문
안녕하세요, 먼저 좋은 강의 제공해 주셔서 감사하게 잘 듣고 있다는 감사 말씀 드리고 싶습니다.질문 사항은,수업 중 정의하신 lstm 클래스의 forward 함수를 아래와 같이 정의 하셨는데요,class LSTM(torch.nn.Module): def __init__(self, vocab_size, embedding_dim, hidden_dim, num_layers, n_classes) -> None: super(LSTM, self).__init__() self.vocab_size = vocab_size self.embedding_dim = embedding_dim self.embedding = torch.nn.Embedding(vocab_size, embedding_dim) self.lstm = torch.nn.LSTM(input_size=embedding_dim, hidden_size=hidden_dim, num_layers=num_layers, batch_first=True, dropout=0.2) self.fc = torch.nn.Linear(in_features=hidden_dim, out_features=num_classes) self.sigmoid = torch.nn.Sigmoid() def forward(self, x): x = self.embedding(x) x, (h_n, c_n) = self.lstm(x) x = torch.sum(h_n, dim=0) x = self.fc(x) return xforward 함수의 마지막 부분에서 fc를 통과한 x를 self.sigmod 함수에 통과 시키지 않고 return 하여도 되는건지 궁금합니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 16 [이론] Transformer의 Encoder 질문
안녕하세요, 강의 감사드립니다.multi-head attention에서 Q,K,V 차원에 대해 질문드립니다.1. 여기서 H는 multi-head 시킨 후 (concatnation 후)의 최종 feature 차원을 의미하는지 궁금합니다. (단일 self-attention에서도 Q,K,V에서 H와 다른거 같은데 확인부탁드립니다)2. 만약, 1이 맞다면 Q,K,V의 차원은 N x H/M 이 되어야 하는건 아닌가 싶습니다. (m은 M을 표현하기 위한 index로 보이기 때문입니다)혹시 제가 잘못 이해하고 있는 부분이 있다면, 정정해주시면 감사드리겠습니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Auto Differentiation에서 computational Graph 질문있습니다
안녕하세요, 좋은 강의 준비해주셔서 감사드립니다.딥러닝에 대한 흥미가 점점 더 깊어지는 중입니다!한가지 간략히 질문드리고 싶습니다.노드의 정의 문제와 관련된거 같은데요.. computation graph에서의 노드는 x, w, h, y, L 전부를 의미하는 반면, Neural network에서의 노드는 x, h, y, L이라고 이해하면 될까요?미리 감사드립니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3 이론 classification Loss function 질문
안녕하세요.Section 3 이론 classification Loss function 질문있습니다.ground truth는 각 class별 실제 확률값이라고 하셨는데, 실제 데이터에서 우리가 주어진 정보는 해당 observation이 어떤 클라스를 가지는지 label정보만 주어집니다. (확률이 아님)각 loss function별 비교를 위해 설명해주신부분은 이해가 되었으나, 실제로 모델이 학습할때 class별 ground truth 확률값을 모르는 상황에서 어떻게 학습이 되는지 궁금합니다.혹시라도 강의 후반에 관련 내용이 나온다면 미리 죄송하다는 말씀 드립니다.감사합니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
section4의 entropy 시그마 식 전개에 대한 질문입니다.
안녕하세요, 좋은 강의 잘 듣고 있습니다. 다름이 아니라 entropy를 안내해주실때 entropy의 식이-Σp_i*log(p_i)위 식이고, p와 1-p에 대한 의미도 잘 이해했습니다. 그런데 대입하는 과정에서 갑자기-plogp-(1-p)log(1-p)가 된 것이 이해가 안되네요... 그래프로 그려주시면서 설명해주신 것도 잘 이해가 되는데, 어떤 과정으로 위 식이 나왔는지 이해가 안되서 질문드려요.제가 단순 시그마 푸는 법을 잊어서 생긴 것이라면 다시 찾아보겠습니다. 두 값을 대입한다는 말이 어떤 것을 의미하는지 잘 이해가 안되서 질문드립니다. 감사합니다.
-
미해결생성형 AI 기초와 동작 원리 이해
ChatGPT RLHF 관련 질문드립니다!
안녕하세요. NLP 강의 들었었는데 쉽고 정확하게 강의해주셔서 이번에 새로나온 강의도 신청하게 되었습니다! ㅎㅎ질문 드립니다.1) RLHF에서 1단계는 GPT-3가 특정 질문에 대해 아무말 대잔치하며 생성했을 때, 인간이 선호하는 방식은 바로 이거야 라고 알려주어 아무말 대잔치를 못하도록 모델이 학습되는 과정(=SFT) 이라고 이해가 되는데 맞나요? 2) 2단계는 1단계에서 생성한 여러 답변들에 인간이 랭킹을 매긴다는 것을 이해했습니다. 인간이 매긴 랭킹들에 대한 데이터 셋을 RM(Reward Model)이 학습한다는건,예를들어 RM의 input은 1단계에서 GPT가 생성한 문장셋, output은 각 문장셋들에 대한 인간이 매긴 각 랭킹을 맞추도록 학습하는 과정이 맞나요? 3) 3단계는 "1단계에서 Fine-Tuned된 모델을 이제는 인간이 보상해주는 대신 2단계에서 생성한 RM이 인간역할을 하며 지도해준다" 라고 이해해도 될까요? 좋은 강의 다시 한번 감사합니다 :)
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section14 관련 질문요청드립니다.
83쪽에 '예를 들어 (3*3) Conv.Kernel 2개를 쌓은 경우 Receptive Field는 (7*7)이 된다!'라고 하셨는데 Kernel이 쌓이는게 아니라 Layer 아닌가요?? 혹시 제가 잘못 이해하고 있었다면 지금까지 각 Layer마다 하나의 kernel만 훑고 지나가는 줄 알고 있어서 Kernel이 쌓인다 라는 개념을 잘 모르겠습니다.기존 ANN에서 Bias를 더하는 개념과 ResNet에서Residual Connection을 더하는 개념의 차이를 잘 모르겠습니다. 둘다 비슷하게 느껴집니다 ㅠㅠ.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
2-8 fully connected NN answer 코드 중 torch.nn.Linear 질문드립니다!
안녕하세요. 강의 잘 듣고있습니다 :D아래 코드에서 torch.nn.Linear에 해당하는 부분이 강의서 말씀해주신 aggregation에 해당되는 부분일까요? 편의상 bias 벡터는 생략된걸까요..? class Model(torch.nn.Module) : def __init__(self) : super(Model, self).__init__() self.layers = torch.nn.Sequential( # 첫번째 레이어 torch.nn.Linear(in_features = 128, out_features = 64, bias = True), # 첫번째 레이어의 activation 함수 torch.nn.Tanh(), # 두번째 레이어 torch.nn.Linear(in_features = 64, out_features = 16, bias = True), # 두번째 레이어의 activation 함수 torch.nn.Tanh(), # 세번째 레이어 torch.nn.Linear(in_features = 16, out_features = 1, bias = True), # 세번째 레이어의 activation 함수 torch.nn.Sigmoid() ) def forward (self, x) : return self.layers(x)
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
ToTensor와 DataLoader관련질문드립니다!
안녕하세요! 이론적 이해가 아직까지는 잘되나 코드에서 잘 이해가 가지않는 부분이 있어 질문드립니다~ToTensor에서 왜 0~255를 0~1값으로 스케일링 하는 이유는 무엇인가요?DataLoader 에서 데이터를 미니배치로 넘기면 가로,세로 길이가 32로 바뀌는 이유는 무엇인가요? squeeze 함수를 찾아보니 길이가 1인 차원이 없는 행 백터, 열백터, 스칼라 배열을 삭제한다고 하는데, 아래에서 사용되는 이유는 무엇인가요?train_features, train_labels = next(iter(train_dataloader)) # train_features.size()는 64개로 세분화된 미니배치 크기, 채널, 가로, 세로 길이를 보여준다. print("Feature batch shape : {}".format(train_features.size())) # train_labels.size()도 미니배치 크기만큼 있는 것을 확인할 수 있다. print("Labels batch shape : {}".format(train_labels.size())) img = train_features[0].squeeze() # squeeze() 길이가 1인 차원이 없는 행 백터, 열백터, 스칼라 배열을 삭제한다. label = train_labels[0] plt.imshow(img.permute(1,2,0)) plt.show print("Label : {}".format(labels_map[label.item()]))
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
13 표준화에 관한 질문
1.위의 그림에서 weight가 정규분포(Gaussian distribution)를 따르기 때문에 각 layer의 input의 분포도 정규분포를 따른다고 말씀해주셨는데 그 이유가 궁금합니다..2.표준화(Z~N(0,1))를 위해서는 확률분포가 정규분포여야 한다고 알고 있습니다..그래서 batch normalization의 위의 식에서 x가 정규분포를 가져야 한다고 생각했는데 학습 데이터셋은 직접 정규분포를 가지게 넣는다고 가정하더라도 그 다음에 있는 convolutional layer의 weight가 gradient descent에 의해 업데이트 되어 더이상 정규분포를 따르지 않으면 출력값이 정규분포를 따르지 않을수도 있지 않을까요...?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Jupyter Notebook환경 관련 질문
9강 [실습] PyTorch 기초 - Tensor 강의에서 질문 있습니다.Lesson/inflearn_practicals 폴더에 아무 파일도 들어있지 않은데, 폴더가 원래 구성이 되어 있는 것이 아니고 파일을 직접 다운로드해서 폴더를 알아서 구성하는건가요?Jupyter notebook 상에서 강사님처럼 section이 모두 뜨지 않아 질문 드립니다.