묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
Batch Normalization Layer 의 Training parameter 이해 관련 질문
안녕하세요? 머신러닝 완벽가이드 수강하고 CNN 으로 넘어왔네요~ 요 강의 마치고 컴퓨터 vision 쪽 강의도 수강하려고 미리미리 구매해 놓았습니다. ㅎㅎ 항상 좋은 강의 감사드립니다! Batch normalization 강의를 듣고 실습을 해 보다가 세 가지 궁금한 점이 생겨서 질문 드립니다. (아래 내용 중에서 제가 잘못이해하고 있는 부분 지적해 주시면 감사드리겠습니다. ^^;;) 아래 그림과 같이 Batch Normalization 을 포함시켜서 Model Creation 했을 때 Model Summary 를 보면 Batch Normalization layer 에도 Training paramter 가 할당되는 것을 볼 수 있는데요, 1) Batch normalization layer 의 training paramter 의 갯수는 어떤 수식(?) 에 의해서 결정되는지.. 궁금합니다. 수식을 알 수 있다면 layer 에 대한 이해를 조금 더 높일 수 있을 듯 해서 질문드리고 있습니다. 2) BN 방법이 Batch 별로 Z = (X - Xbar)/S 수식을 적용해서 얻은 평균이 0이고 표준편차가 1로 scaling 이 된 데이터들을 activation function 에 input 하는 방식인 것으로 이해가 되는데요, 각 node 나 feature point 들 중 신호가 약한 부위를 끄거나 (off), 신호가 분명한 부위를 켜는 (on) 역할을 데이터 평준화를 통해 좀 더 일관성 있게 해 주는 거라고 이해하면 될지요? (강의 중 설명에서는 오히려 noise 개념으로 어려운 학습을 하게 해서 overfit을 줄이는 역할을 한다고 해서.... 사실 일반적인 ML 에서의 표준화 개념과는 상충되는 듯 해서 이해하기 쉽지 않습니다.) 요약 드리면 Batch normalization layer 가 전 후 layer 들에게 영향 주는 물리적인 역할이 무엇인지.. 에 대한 질문입니다. Conv 와 Activation 사이에 위치한다면 Conv layer 에는 영향을 주지 않을 것이고, Activation 을 통과하는 결과에만 영향을 줄 것 같아서요. 3. '표준화' 라는 개념으로 BN layer 를 이해해 보면 왠지... 각 배치별 평균 벡터와 표준편차 벡터값 (혹은 분산-공분산 행렬) 들을 저장해 놓았다가, test data 예측시 활용할 것도 같은데요.. (마치 sklearn 의 preprocessing 모듈의 StandardScaler 클래스의 fit 메소드 처럼) 다만 매 batch 별로 표본 평균 벡터와 표본 분산공분산 행렬이 계속 달라질 것일텐데, batch 가 진행되면서 해당 통계량들을 업데이트 했다가 최종적으로 업데이트 된 통계량을 test data 예측할 때 사용하게 되는 것인지요..? 요 개념이 맞다면 대략 어떤 방식으로 weight 들을 업데이트하며 학습하게 되는지.. 개념적으로라도 이해하고 싶습니다. 다른 weight 들과 마찬가지로 결국 loss 를 줄이는 방향으로 최적화 되는 weight 들인 것인지도 궁금하구요~~ (아니면 BN 의 training parameter 들은 일종의 noise 처럼 임시로 저장은 하지만 예측 시 활용이 안되는 weight 들인 것인지요? ) 감사합니다!
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
권철민 교수님 모든 강의를 다 듣고 있는 학생입니다.
안녕하세요 권철민 교수님 교수님의 모든 강의를 다 듣고 있습니다. 좋은 강의 감사합니다.첫번째 질문: 딥러닝 컴퓨터 비전 완벽가이드 초기판부터 개정판까지 수강하고 있고 동시에 CNN 완벽가이드, 파이썬 머신러닝 등 수강을 하면서 저는 늘 궁금했습니다. 제가 pyqt5를 UI디자인하고 Yolov5 모델을 트레이닝하면서 실시간 영상의 결과를 DB로 받아서 알람을 주는 스마트 CCVT 시스템을 한번 구성하고 싶어서 github에서 다른 개발자가 만든 소스도 참고하고 있습니다. 혹시 교수님께서 Github에서 잘 만들어 졌다고 fork 하시거나 추천해주실 만한 실시간 영상 오브젝트 디텍션 오픈소스가 있으신지요? 두번째: 오라클 성능 분석강의도 듣고 있는데 혹시 No SQL 쪽 강의 계속은 없으신지? 위에 부분에서 오브젝트 디텍션으로 받은 결과값을 DB로 저장하여 데이터를 시각화 하는 부분을 시스템으로 확장하고 싶어서 여쭤봅니다. 새로나온 강의도 수강신청 할겸 해서 여줘봅니다. 교수님 지식을 나누어 주셔서 감사합니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
선생님, 질문이 있습니다.
선생님, 이번에 Kernel과 Filter 차이를 설명하셨는데, 제 이해가 맞는지 검토를 부탁드려도 될까요? 우리가 보통 color image는 R,G,B 총 3개의 (28,28,1) 이미지가 결합이 된 형태이니까 이를 묶어서 (28,28,3) 이렇게 표현을 하고 흑백 이미지의 경우에는 그냥 (28,28,1) 이렇게 표현하잖아요? 그렇게 되면 각각 Channel의 개수는 3,1이 되는 것이구요. 만일 11:54의 Conv2D 조건에서 Input이 RGB 이미지로 주어진다면, 0) 일단 공통적으로 Input (28,28,3)에 대한 Batch 크기는 논외로 여거두고, 1) kernel 정방행렬 한 개를 나눠서 생각해보면 크기는( 3,3,1) 이 되는데, channel 수에 맞추기 위해(RGB) 결국 (3,3,3)이 되는 것이고, 2) filter의 개수가 4개이기 때문에 이 (3,3,3) 크기를 갖는 kernel이 총 4개가 존재한다 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 반면 흑백 사진 (28,28,1) 의 경우 0) 공통적으로 Input (28,28,1)에 대한 Batch 크기는 논외로 여겨두고, 1) kernel 정방행렬의 크기는 일단 (3,3)으로 주어지는데 Channel 수에 맞춰야 해서 (3,3,1)이 되는 것이고, 2) filter의 수가 4개이기 때문에 (3,3,1)의 크기를 갖는 kernel이 총 4개가 존재한다 이렇게 흐름으로 나눠서 생각이 되는데 어디부터 잘못이고 어디까지 이해가 잘 되었는지 짚어주시면 감사합니다ㅜㅜ!!
-
미해결최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
Attention에 질문이 있습니다.
안녕하세요, 최신 기술 ViT를 이해해보려고 강의를 찾은 순간 바로 결제해서 감사히 잘 듣고 있습니다. 자연어 처리에 대한 이해가 부족해서 attention에 대한 개념이 조금 어려운데요. 강의를 돌려 듣다 보니 attention을 설명해주실 때 사용한 'Bottleneck Attention Module'에 대해서 대략적으로 이해했습니다. F' = F + F x M(F) M(F)를 계산하는 것 자체가 픽셀 중에서 어느 픽셀이 중요한지를 계산하는 것과 동일하다고 이해했습니다. 그래서 residual 연산을 통해 F'를 계산하구요. 질문이 두 가지가 있습니다. 1. 근데 F'는 어디에 사용되는 건가요? 일반적인 CNN처럼 계속해서 생성되는 feature의 하나일 뿐인건가요? 2. BAM 블록은 특정 이미지에 overfitting되지 않는 다는게 이해하기 어렵습니다. attention이라는 게 이미지 전체를 보는 것인데 전체를 보더라도 overfitting되지 않는 것이 이해하기 어렵네요 새로운 개념을 공부하려다 보니 너무 기초적인 질문을 드린것만 같습니다. ㅎㅎ
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
Alexnet 구현 코드에서 BN 질문입니다
안녕하세요! 질 좋은 강의에 감사 인사부터 드립니다! 다름이 아니라 해당 강의 7:49초 부터 AlexNet 구현 코드를 설명해주시는데요! 이론적인 부분에서 원래 Alex Net이 LRN(Local Response Normalization)이 적용되지만 구현코드 상 BN을 적용하는 걸로 설명해주셨습니다! 그런데 BN layer 코드를 자세히 보니 AlexNet 구현 과정에서는 '컨볼루션 -> 활성함수 -> BN 적용' 순서로 되어 있더라구요? 물론 이 과정이 잘못되었다는 건 아닌데 보통 '컨볼루션 -> BN 적용 -> 활성함수' 과정으로 진행하는게 대부분 더 모델 최적화에 긍정적인 영향을 미친다고 알고 있어서요! 제가 AlexNet 논문까지는 확인을 안해보았지만 논문 상에서도 LRN(실습 코드에서는 BN)이 활성함수 이후에 적용되는 순서로 되어 있는지 문의드려도 될까요!?
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
선생님 param 계산되는 과정에서 질문이 있습니다.
안녕하세요 선생님, param 계산되는 과정에서 질문이 있습니다. 첫번째 param인 2432는 왜 2432가 나오는지 알겠는데 두번째 param인 9248은 어떻게 9248이 나오는지 잘 모르겠습니다 ㅠㅠㅠ 2432 + (?) = 9248이 되는거 같은데.... (?)는 3*3(kernel_size) * 3(channel)*32(filters) * ? 인거같은데... 제가 직접 계산해보면 9248이 안나옵니다 ㅠㅠㅠ 2432 + (?) = 9248 여기서 ?가 뭔지 알 수 있을까요? 감사합니다!!
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
초기에 큰 LR 의 적용할시 오버피팅 문제
안녕하세요 선생님 초기에 LR을 크게 할 때 왜 overfitting인지 잘 이해가 가지 않습니다. 초기에 큰 LR을 적용할시 Weight의 급격한 변화로 지역 최적해에 빠져 과적합 가능성이 있다고 언급하십니다. (2:00~3:35쯤 설명) 그런데, 제 생각에는 지역최적해에 빠져 나오지 못 하는 경우, 충분한 학습을 하지 못하고 수렴 한 것이라 overfitting 보다는 under fitting이라고 생각되는데, 왜 overfitting인지 잘 모르겠습니다 . 항상 즐거운 강의 감사합니다 :)
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
안녕하세요 교수님 이미지 제너레이터 관련 질문드립니다.
이전 강의들에서는 이미지를 증강 할 때, data_generator.fit(image_batch) data_gen_iter = data_generator.flow(image_batch) aug_image_batch = next(data_gen_iter) 제너레이터에 fit을 하고 flow으로 이터레이터를 생성하고 next로 조금 씩가져오는 것으로 이해하였습니다. 하지만 이번 강의에서는 왜 제너레이터에 fit과 next를 하지 않으시는지 궁금합니다... 또한 제너레이터가 이미지를 생성하는 것이 아니라 flow를 만들어 주고, next로 랜덤하게 적용해서 가져와 주는 것으로 이해하는 것이 맞는지요..? 감사합니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
선생님 공부하다가 조금 헷갈려서 질문드립니다.
선생님 기존 프로그래밍과 머신러닝의 차이가 기존 프로그래밍은 기존의 알고리즘 수식이나 통계분석 모델을 그대로 사용하여 결과를 산출한다면, 머신러닝은 다양하고 많은 데이터를 통해 알고리즘을 학습시켜서 최적화된 모델을 통한 결과가 산출이라고 한다면.. 회귀분석모델에서 조금 헷갈리는 것이.. 기존의 통계분석의 회귀분석은 머신러닝같은 개념이었던 건지.. 기존의 통계분석인 회귀분석의 회귀계수들도 데이터에 따라 바뀌었는데.. 1:57 의 그림에서 최적의 함수를 찾는다는 부분에서 기존 통계분석의 회귀분석을 생각할 때 갑자기 헷갈려서요..ㅠ
-
해결됨딥러닝 CNN 완벽 가이드 - Fundamental 편
신경망이 깊어질수록 필터의 개수가 많아지는 이유가 있나요?
안녕하세요, 수업 잘 듣고있습니다! Conv2D의 필터 사이즈가 32, 64, 128 로 점점 커지는데, 점점 필터 사이즈가 커지는 이유가 있나요? 제 예상으로는 * 사실 32, 32, 32도 상관없지만 관례상 필터 사이즈가 커질수록 성능이 좋기 때문 => 이것도 커널 사이즈를 (3, 3) 으로 하냐 (5, 5)로 하냐의 실험적인 문제와 동일하다 또는, * 신경망이 깊어질수록 이미지의 추상적인 특징이 증가하기 때문에 이것을 담을 그릇이 커져야 한다. 이긴 합니다 또, 이것은 별개의 질문인데 너무 헷갈려서요.. 필요한 파라미터의 개수는 kernelSize * kernerSize * filters * channel 라고 하셨는데, INPUT ( None, 28, 28, 3) 이고 Conv2d (filters=32, kernel_size =(3, 3)) 이라면 파라미터 개수는 3 * 3 * 32 * 3 이+ 32 가 될것입니다! 근데 여기서 제 생각으로는, 인풋 채널이 3개긴 하지만, 인풋 채널 3개와 각각의 커널이 합성곱 되어서 나온 결과도 3개이고, 이 결과 3개를 더해서 하나의 행렬로 만들고, 각각의 결과는 모두 같은 필터와 곱해져서 나왔기 때문에 인풋 채널에 영향을 받는다는 내용이 머릿속으로 잘 이해가 안됩니다 ㅠㅠ 이부분도 도와주세요
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
각 GD방법에 따른 iteration 횟수가 달라지나요?
안녕하세요! 강의 잘 듣고 있습니다! 제가 알기로는 epoch란 전체 데이터를 모두 관측한 횟수이고 iteration은 한 에포크에서 가중치 갱신이 된 횟수로 알고 있습니다. 전체 데이터가 100개이고, 500번의 epoch을 돌린다고 할 때, GD : 각 데이터당 500번이 인풋 데이터로 선택. 총 50,000번의 학습. iteration도 500. batch_size는 100 SGD : 각 데이터당 평균적으로 5번의 인풋 데이터로 선택. 총 500번의 학습. iteration은 50000. batch_size는 1 Mini - Batch(batch_size = 10) : 각 데이터당 50번의 인풋데이터로 선택. 총 5,000번의 학습. iteration은 5000, batch_size = 10 위 결과처럼 iteration*batch_size의 값은 모두 동일하지만 각 데이터가 학습되는 비중이 다르게 되는 것이 맞을까요? 또, 결론적으로 GD에서 변환되어 나온 SGD와 배치방법(이하 SGD 통일)은 표면적으로는 GD의 "전체 관측 후 갱신" 에서 SGD의 "부분 관측 후 갱신" 이라는 양적 개념이 달라진 것처럼만 보이지만 사실 그 내부에는 GD의 "동일한 데이터 반복 학습"에서 SGD의 "동일한 데이터 반복 학습 횟수 감소"로 볼 수도 있는건가요?
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
data_generator.fit(image_batch)에서 fit의 의미
설명 중에 fit을 안해도 되는데 나중에 노멀라이제이션도 전체 데이터에 적용되어야하기 때문필요하다고 하던데 잘 이해가 안되는데 fit이 뭔지 궁금합니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Node가 1개라는 말이 무슨 말인지 잘 모르겠습니다ㅠㅠㅠㅠ
Node가 1개라는 말이 무슨 말인지 잘 모르겠습니다ㅠㅠㅠㅠ 예시 들어서 한번만 말씀해주실 수 있을까요?
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
교차 검증
안녕하세요 머신러닝 완벽가이드 강의에서 최근에 교차검증에 대해서 배웠는데요. 여기서도 k fold와 같은 교차 검증이 가능한지, 실익이 있는지 궁금합니다. 그리고 만약 검증 데이터의 결과가 만족스럽지 않을 때는 무엇을 해 줄 수 있을까요? Dense 추가, 배치 사이즈 작게 등이 생각나는데 다른 것도 있으면 알려주세요. 감사합니다