전체 글
-
엔트로피와 크로스엔트로피 Cross Entropy딥러닝/활성화 함수 2022. 6. 5. 11:45
엔트로피 엔트로피 공식은 이렇게 생겼습니다. $$ \large -\sum x log({x}) $$ 엔트로피는 불확실성의 정도, 무질서함의 정도를 표현하는 것입니다. 예를 들어 동전과 주사위를 비교해 봅시다. 동전은 앞, 뒷면 2가지 경우의 수가 나오고 주사위는 6면 6가지 경우의 수가 나옵니다. 동전은 앞면과 뒷면 심플하게 2가지 경우이기 때문에 안정적이고 질서가 있습니다. 주사위는 좀 더 경우의 수가 다양하기 때문에 상대적으로 무질서해 보입니다. 엔트로피 공식에 대입해 보면 주사위 엔트로피 값이 큼을 알 수 있습니다. $$ \large -\frac{ 1 }{ 2 }log\frac{ 1 }{ 2 }-\frac{ 1 }{ 2 }log\frac{ 1 }{ 2 }\approx0.3 $$ $$ \large -\..
-
시멘틱 세그먼테이션의 시초가 된 FCN-32의 아이디어딥러닝/시멘틱 세그먼테이션 2022. 6. 5. 09:43
시멘틱 세그먼테이션은 RGB 3채널인 이미지를 출력 차원으로 하는 딥러닝 모델입니다. 이러한 모델을 특히 Fully Convolutional Neural Network 구조로 바꾸어 놓은 FCN에 대해 알아보도록 하겠습니다. 시멘틱 세그먼테이션 시멘틱 세그먼테이션은 딥러닝 아키텍쳐로 보통 출력 부분이 이미지넷의 이미지 종류 개수에 맞추어 (배치 크기, 1000) 으로 해왔던 기본 CNN 과 달리 출력 부분을 원본 이미지 차원으로 바꾸어 놓은 모델을 말합니다. 예를 들어 (배치 크기, 3, 224, 224) 가 될 수 있습니다. FCN-32 모델의 첫 입력은 (224, 224, 3)으로 입력 원본 이미지와 동일합니다. 실제 코딩으로 주입할 때는 (3, 224, 224) shape으로 주입해야 하는 점 주의..
-
ResNet의 잔차 아이디어딥러닝/CNN 모델 2022. 6. 5. 08:25
ResNet은 2015년 처음 공개되었습니다. Residual (잔차) 란 새로운 개념을 적용하였는데 이 잔차에 대해 알아보겠습니다. 서문 영어로는 Residual Connection (shortcut) 한국어로 잔차라고 합니다. 일찍이 알파고가 처음 나왔을 시절 장병탁 교수님이 지은 저서에 잔차를 강조한 부분이 얼핏 있었던 것으로 기억납니다. 그때 저는 딥러닝이 아닌 옛날 머신러닝을 한참 공부하고 있었던 병아리로써 이해가 되지 않았던 책이지만 잔차란 단어는 지금도 기억납니다. 딥러닝에서는 어떠한 목적을 가진 가중치 흐름이 여러 개가 있을 수 있습니다. 그 흐름들 중 일부 또는 전부를 모델이 진행됨에 따라 계속해서 합쳐지거나 분화됩니다. 그 중 퓨전 행위는 합치는 행위를 뜻합니다. 잔차는 일종의 퓨전 행..
-
CNN 파라미터 수 계산 방법딥러닝/기본 연산들 2022. 6. 4. 14:43
CNN 아키텍처의 컨볼루션 층 파라미터 개수 세는 법을 알아보겠습니다. 컨볼루션 층은 스트라이드가 1 또는 2일 때, 커널 사이즈가 1x1, 3x3, 5x5 일때로 또 다시 구분합니다. 스트라이드=1, 패딩=1, 커널 사이즈=3x3 배치 차원을 뺀 입력 차원 수는 (224, 224, 3)이고 3x3 컨볼루션을 쓰며 출력 차원 수는 (224, 224, 8)이라고 생각해 봅시다. 컨볼루션 연산을 통해 XY 평면 차원수는 그대로 유지하였고 채널 차원 수만 3에서 8로 증가했습니다. 이때 파라미터 수를 계산해 봅시다. 3x3x3 인 커널이 8개 존재하는 것이므로 3x3x3x8이 됩니다. 스트라이드=2, 패딩=2 , 커널 사이즈 5x5 배치 차원을 뺀 입력 차원 수는 (224, 224, 8)이고 3x3 컨볼루션을..
-
컨볼루션의 패딩 적용딥러닝/기본 연산들 2022. 6. 3. 21:39
컨볼루션에 패딩을 적용하면 해상도가 조금 늘어납니다. 그럼 과연 얼만큼 늘어날지 내가 알던게 맞을지 확인해 보도록 하겠습니다. 패딩은 컨볼루션의 입력 XY 평면 차원을 증가시킵니다. 보통 패딩을 주면 오른쪽과 하단쪽에만 주는 것으로 잘못 이해할 수 있습니다. 하지만 이런 패딩이 아닙니다. 이렇게 패딩을 주는 것이 아닙니다. Padding=1을 적용할 경우 동서남북 방향으로 +1씩 패딩이 주어집니다. 이렇게 말입니다. 몇 가지 예시를 보면 감을 잡을 수 있습니다. 입력 XY 차원 수가 (6, 6)이고 Conv 3x3 커널을 패딩 없이 적용할 경우 입력 XY 차원 수가 (6, 6)이고 Conv 3x3 커널을 패딩=1로 적용할 경우 입력 XY 차원 수가 (14, 14)이고 Conv 7x7 커널을 패딩 없이 적..
-
셔플 연산과 Conv 1x1의 공통점딥러닝/기본 연산들 2022. 6. 3. 19:52
셔플넷 (ShuffleNet)의 셔플 연산과 컨볼루션 1x1 연산간에는 공통점과 차이점이 있다는 점 알고 계신가요? 이 둘의 공통점은 채널 차원으로 엘리먼트들을 섞는다는 점입니다. 차이점도 알아보도록 하겠습니다. 셔플과 1x1 컨볼루션은 모두 채널 별로 뉴런들을 섞는 공통점이 있습니다. 채널 단위로 뉴런들을 섞습니다. 셔플은 특히 XY 평면 상에서는 뉴런의 움직임이 없습니다. 1x1 컨볼루션은 컨볼루션 정의 상 어쩔 수 없이 XY 평면 방향에서 보았을 때도 뉴런 값의 변형이 일어납니다. 그래서 XY 평면 상의 정보를 보존하고 싶을 때는 셔플을 사용하여 채널 별로 섞는 것이 바람직해 보입니다. 그리고 단순히 채널 별 정돈이 안되어 있는 경우에 적절히 섞어서 정돈만 하고 싶으면 셔플을 쓰는 것도 좋은 방법입..
-
Group Conv 그룹 컨볼루션딥러닝/기본 연산들 2022. 6. 3. 19:28
그룹 컨볼루션의 정확한 정의를 알아보도록 하겠습니다. 각 그룹별 컨볼루션 커널은 공유되는 것일까요? 아닐까요? 정답은 아닙니다. 그럼 자세히 알아보도록 하겠습니다. 정의에 따르면 일반적인 컨볼루션 커널의 차원수는 (배치 수, X, Y, Depth) 인데 이 중 Depth 값이 현재 레이어의 Depth 전체입니다. 이렇게 무심코 컨볼루션을 써 왔다면 한 번쯤은 Depth의 값이 너무 길다는 사실에 의문을 가질 법 했습니다. 그래서 컨볼루션 커널의 Depth 값을 줄여보고 싶었습니다. 그래서 탄생한 것이 Group Conv입니다. 그림에서 보듯이 Group Conv는 Depth를 3분할하여 각각에 대해 서로 가중치 값이 다르면서 Depth 길이가 1/3로 줄어든 1/3 컨볼루션을 차용하고 있습니다. 각 분할..
-
딥러닝 컨볼루션 conv 이란?딥러닝/기본 연산들 2022. 6. 3. 19:11
Conv 컨볼루션 연산의 정확한 정의에 대해 알아보도록 하겠습니다. 컨볼루션 연산을 설명할 때 흔히 2D 그래픽 이미지로 컨볼루션 커널을 표현하여 혼동이 될 때가 있습니다. 그래서 3D 그림으로 설명하겠습니다. Depth 차원이 어떻게 되는지를 먼저 아셔야 합니다. 컨볼루션층을 한번 거치면 Depth는 1이 아니라 커널의 개수 N입니다. 거대한 나무젓가락 한짝 같은 좁고 긴 컨볼루션 커널 (필터) 를 한번에 적용합니다. 적용시에는 Element-wise Multiplication 이라고 엘리먼트 간 곱셈이란 연산을 사용합니다. 이러한 커널을 XY차원 방향으로 한 번 쓱 훑고 지나갈 경우 1 Depth에 해당하는 뉴런들이 생성됩니다. 하나의 컨볼루션 연산은 여러 커널로 구성됩니다. 따라서 커널 수가 64개..