728x90

저스틴 존슨 교수님 강의 정리

알렉스넷 전반

 

 

 

 

 

 

Lec8_Convolution_Networks_Arcitecture1_AlexNet.pdf
1.84MB

 

 

 

 

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

- 이미지넷 분류 대회

- 알렉스넷의 구조

- 알렉스넷의 역사적 의의
- 메모리 사용량, 파라미터 개수, 소수점 연산 횟수

- 데이터 추이




 

1) 이미지넷 분류 대회

- 이전에 이미지 분류에 사용되는 대표적인 데이터셋으로 이미지넷 데이터셋이 있다고 배웠었는데, 이 데이터를 활용한 이미지 분류 대회가 매년 열리고 있습니다. 딥러닝이 활용되기 이전에 이미지넷에서 우승한 방법들은 이미지로부터 추출한 특징들을 조합하여 분류하는 방식이었는데 오류율이 25%대로 아주 높았었습니다. 하지만 2012년 인공신경망 기반 방법인 알렉스넷이 나오면서 오류율을 25%에서 16%대로 크게 줄일수 있었고, 이후 이미지넷 분류 대회에서 신경망 방법이 널리 사용되게된 시작점이었습니다.

 

 

 

 

2) 알렉스넷의 구조

- 알렉스넷은 227 x 227 입력을 받고, 5개의 합성곱 계층과 최대 풀링, 3개의 완전 연결 계층과 ReLU 함수를 활성화 함수로 사용하고 있어요. 알렉스넷의 특이한 점이 2가지가 있는데 하나는 알렉스넷이 나온 2012년 당시에는 GPU 메모리가 작아 2개의 GTX580로 아예 신경망을 나누어 두 GPU에서 학습시켰었고, 다른 하나는 배치 정규화가 나오기 이전에 다른 종류의 정규화를 사용했는데 지역 반응 정규화라는 방식을 사용하였다고 합니다.

 

 

 

 

3) 알렉스넷의 역사적 의의

 또 알렉스넷이 컴퓨터 비전 연구에 있어서 얼마나 중요한지 인용 횟수를 보면서 살펴보았는데, 2019/9까지 46,000번 인용되었으며 찰스 다윈의 종의 기원이 50,000번, 이나 셰논의 정보 이론에 관한 논문이 69,351번 인용되었던것 만큼 인용 횟수 만으로 비교할 수는 없지만 아주 영향력이 큰 논문이라고 할수 있었습니다.

 

 

 

 

 

4) 메모리 사용량, 파라미터 개수, 소수점 연산 횟수

 다음으로 알렉스넷의 각 계층별 메모리 사용량과 학습 가능한 파라미터의 개수, 그리고 소수점 연산 횟수 등에 대해서 정리하였습니다. 우선 메모리 크기의 경우 출력 값 하나당 4바이트를 차지할 경우 4 x 채널 개수 x 가로 x 세로로 구할수 있었습니다. 다음 학습 가능한 파라미터 개수는 합성곱 계층의 가중치 개수 = 출력 채널의 개수 x 입력 채널 개수 x 커널 크기 x 커널 크기 + 편향 개수(출력 채널 개수)로 구하였으며, 마지막으로 소수점 연산 횟수 = 출력 원소 개수 x 출력 원소 하나당 연산 횟수로 구할 수 있었고, 이를 모든 층에다가 계산하여 알렉스넷에서 전체 필요한 메모리 공간과 학습 파라미터 개수, 연산 횟수를 정리할 수 있겠습니다.

 

 

5. 데이터 추이

- 마지막으로 각 계층별 메모리 공간과 학습 가능한 파라미터 개수, 소수점 연산 횟수의 추의를 보면서 어떻게 신경망의 설계해 나갈지에 대한 방향을 살펴보았습니다. 우선 합성곱 계층의 경우 필터의 개수가 많다보니 메모리 사용량이 크며 맨 처음에 해상도가 큰 탓에 가장 컸다가 점점 줄어드는 분포를 보였습니다. 그다음 완전 연결 계층은 벡터가 되다보니 필요한 데이터 공간이 크게 줄었습니다.

 

 다음으로 학습 가능한 파라미터 개수는 합성곱 연산의 경우 채널과 커널 크기가 작다보니 대체적으로 작지만 완전 연결 계층에서는 전체 데이터가 펼쳐지는 탓에 학습 파라미터가 급격히 증가했다가 점점 줄어드는 추세를 보입니다. 마지막으로 소수점 연산 횟수의 경우 필터의 갯수와 데이터가 클때 가장 연산횟수가 많았습니다. 이와 같이 알렉스넷의 출력에대해 세가지 추이를 정리할 수 있었습니다.

 

300x250
728x90

 

저스틴 존슨 교수님 강의 정리

다양한 합성곱 연산과 풀링 연산, LeNet-5, 정규화 기법 등

 


https://www.youtube.com/watch?v=ANyxBVxmdZ0&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&index=7

 

 

 

 

Lec7_Convolution_Networks2.pdf
2.10MB

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

-  1 x 1 합성곱 연산

- 1D, 3D 합성곱 연산
- 풀링 연산
- LeNet
- 정규화 기법들

 

 

1) 1 x 1 합성곱 연산

 지난번 합성곱 신경망 1에서는 벡터를 처리하는 완전 연결 계층을 확장하여 공간적 정보들을 처리할수 있는 합성곱 연산에 대해서 대략적으로 알아봤었다. 합성곱 연산은 특정 크기의 필터들이 주어지고, 이 필터들을 슬라이딩 시키면서 출력 텐서를 만드는 연산이었는데, 합성곱 연산의 특수한 경우로 1 x 1 컨볼루션이 있었다.

 

 합성곱 연산의 출력 결과는 두가지 관점으로 볼수 있었는데, 필터 하나당 특징 지도/활성 지도가 하나씩 만들어지다보니 특징 지도 단위로 관점과 채널 단위가 아닌 이미지 픽셀 그리드 단위로 보면서 한 픽셀이 채널 길이 만큼의 차원을 갖는 벡터 단위의 관점이 있었다. 1 x 1 컨볼루션 연산은 벡터 단위로 출력 텐서를 보는 관점으로 특이한 점이라면 이미지의 크기/공간적 차원을 줄이지는 않지만 채널의 크기를 바꿔주더라. 아래의 그림의 경우 64 x 56 x 56의 텐서가 32 x 1 x 1 합성곱 연산으로 32 x 56 x 56으로 채널로 변환되었다.

 

 

 

2) 1D, 3D 합성곱 연산

 이전에 본 2D 합성곱 연산은 3차원 텐서 데이터 채널 x 가로 x 높이 형태의 데이터를 2차원 합성곱 필터를 이용하여 처리하였습니다. 이 외에도 1차원, 3차원 합성곱 필터를 이용한 연산도 있는데, 1차원 합성곱 연산은 텍스트나 음성 같은 순서 있는 데이터를 처리하는 경우에 사용하고, 3차원 합성곱 연산은 3차원 데이터 예를들면 점구름 point cloud같은 데이터를 가지고 합성곱 연산을 할때 사용하고 있습니다. 또 이런 다양한 합성곱 연산들이 텐서플로우와 파이토치 같은 딥러닝 프레임워크들에서 API로 제공되고 있습니다.

 

 

 

 

 

 

 

 

 

 

3) 풀링 계층

 풀링 연산은 입력 텐서의 이미지 크기/공간적 차원을 줄이기 위해 사용되는 연산으로 하이퍼 파라미터로 커널 사이즈와 스트라이드 그리고 풀링 함수를 가지고 있었습니다. 커널 사이즈는 풀링 연산을 할 수용장 범위고, 스트라이드는 일반적으로 커널 사이즈 만큼 주면서 수용장 범위가 겹치지 않도록 해주었습니다. 풀링 함수로 맥스 함수를 사용하는 경우 수용장 영역에서 가장 큰 입력 값을 출력으로 설정해주면서 입력 크기를 크게 줄일수가 있었습니다.

 

 풀링 계층의 중요한 특징은 합성곱 계층에서도 스트라이드를 크게 주어 다운 샘플링이 가능하였지만 합성곱 필터의 파라미터들을 학습시켜주어야 되었습니다. 하지만 풀링 계층은 풀링 함수를 사용함으로서 학습할 파라미터 없이 빠르게 처리할수 있는 장점을 가지고 있었습니다.

 

 

 

4) LeNet-5

 

 다음으로 초기 합성곱 신경망 모델인 LeNet-5에 대하여 살펴보았습니다. LeNet-5는 1998년 Yann LeCun이 미국 우편 서비스 우편 번호 손글씨 인식에 활용 할수 있도록 만든 모델로 합성곱-ReLU-풀링, 합성곱-ReLU-풀링, 완전연결, 완전연결계층 등으로 구성되어 있었습니다.

 

 합성곱 연산을 통해서 입력 이미지의 지역적인 특징들을 추출해내고, 다운 샘플링을 거친 뒤 펼침 연산을 통해서 공간적 정보들을 없애 출력을 백터 형태로 만들고, 최종적으로 10개의 숫자 스코어를 출력하되는데 이 신경망의 특징이라면 공간적 크기, 이미지의 크기가 줄어드는 동안 채널의 숫자가 증가하는걸 볼수 있었습니다. 

 

 

 

 

5) 배치 정규화

 

 배치 정규화는 정규화를 이용하여 내부 공분 변동을 제거하는 기법으로 입력 텐서의 데이터가 왜곡된 형태의 분포를 따르는 경우 정규화를 시켜 제거하고, 최적화 성능을 개선시키는 방법이었습니다. 입력 텐서가 배치 데이터 개수 N x 데이터 차원 D의 형태로 들어올 때 각 차원에 대해서 평균과 분산을 구해 정규화를 시키고, 여기다가 학습 가능한 스케일, 변동 파라미터를 이용하여 정규화의 크기와 위치를 조정할수 있도록 구상되었습니다.

 

 하지만 배치 정규화는 훈련 때는 배치 단위로 정규화를 수행하고 테스트 떄는 훈련 데이터 전체로 구한 평균과 분산을 가지고 사용하다보니 훈련때와 시험때가 다르게 동작하는 단점이 있었습니다. 이런 문제점을 극복하고자 완전 연결 신경망의 경우 배치 데이터 단위가 아닌 층 단위로 사용하는 계층 정규화기법이, 합성곱 계층의 경우 인스턴스 단위로 정규화 시키는 인스턴스 정규화가 나왔으며, 더 나아가 계층 전체가 아닌 한 계층의 일부 채널만 그룹으로 묶어 정규화를 수행하는 그룹 정규화 까지나왔다고 합니다.

300x250
728x90

Lec7_Convolution_Network.pdf
1.59MB

 

 

저스틴 존슨 교수님 강의 정리

 

 

 

 

 

 

 

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리

 

 

Lec6_Backpropagation2.pdf
3.99MB

 

 

 

 

 

300x250
728x90

미시건대 저슨틴 존슨 교수님의 컴퓨터 비전과 딥러닝 강의 6강 역전파에 대하여

www.youtube.com/watch?v=dB-u77Y5a6A&t=1391s

 

 

 

 

Lec6_Backpropagation.pdf
3.77MB

 

 

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=g6InpdhUblE&t=2287s

 

 

 

 

Lec5_Neural Network2.pdf
1.04MB

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=g6InpdhUblE&t=1s

 

 

 

 

Lec5_Neural Network.pdf
2.48MB

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=YnQJTfbwBM8&t=2621s

 

 

 

 

Lec4_Optimization.pdf
1.51MB

 

 

300x250
728x90

저스틴 존슨 교수님의 강의만 들어서는 내용을 잘 알아들을수도 없고 이해가 잘 되지 않는 부분이 많아

 

학습 머테리얼들을 참고해서 적는다.

aikorea.org/cs231n/linear-classify/

 

 

 

 

Softmax 분류기

 

- SVM이 가장 흔하게 사용되는 분류기 2가지 중 하나로 살펴보았습니다 .다른 하나는 소프트맥스 분류기인데 다른 형태의 비용 함수를 가지고 있습니다. 아마 여러분들이 로지스틱 회귀 분류기를 전에 들어보았다면, 소프트맥스 분류기는 다중 클래스의 경우로 그걸 일반화 시킨것이라 할수 있겠습니다.

 SVM이 아래의 출력을 각 클래스의 스코어, 점수로 보고있다면

 소프트 맥스 분류기의 경우 더  직관적인 출력(정규화된 클래스별 확률)을 보여주어 확률적으로 이해할수 있겠습니다. 소프트 맥스 분류기에서 또한 아래와 같은 함수 형태, 맵핑 관계 자체는 바뀌지는 않으나

 이 점수들을 각 클래스별 정규화 되지 않은 로그 확률로 볼것이며, 이 힌지 로스를 아래와 같은 교차 엔트로피 오차로 바꾸어 사용하겠습니다.

 위 형태의 교차 엔트로피 오차에서 f_j는 클래스 점수 백터 f의 j번째 요소를 의미하고 있습니다. 이전에 데이터셋의 총 손실 full loss가 모든 훈련 데이터에 대한 손실의 평균으로 구하였었습니다. 여기서 함수 f_j는 소프트 맥스 함수로 아래의 형태를 가지고 있습니다.

 소프트 맥스 함수는 실제 점수들을 입력받아 나누어 0에서 1사이의 값(확률)으로 만들어주는 함수라고 할수 있습니다. 총 교차 엔트로피 손실은 소프트 맥스 함수를 포함하고 있어 겉보기에는 복잡해보지만 쉽게 이해할수 있겠습니다.

 

 정보 이론적 관점

 실제 확률 분포 p와 추정 확률 분포 사이 교차 엔트로피는 아래와 같이 정리할 수 있습니다.

 소프트맥스 분류기는 추정한 클래스별 확률들과 실제 확률 분포의 교차 엔트로피를 최소화 시키는 것이고, 여기서 실제 확률 분포는 모든 가능한 경우들 중에서 올바른 클래스를 나타내는 확률 분포를 말하는데 p =[0, . . ., 1, . . ., 0] (y_i 번째 자리에만 1이 있음. 원핫 인코딩의 형태)의 형태라고 할 수 있겠습니다.  

그러므로 교차 엔트로피는 엔트로피와 쿨백-리블러 발산을 이용하여 아래와 같이 정리할수 있고,

델타 함수의 엔트로피가 0인 경우, 이는 두 분포 사이의 KL 발산 그러니까 예측 확률 분포와 실제 확률 분포사이의 거리(오차)를 최소화시켰다고 할수 있겠습니다. 다시 정리하자면 교차 엔트로피를 사용하는 목적은 올바른 대답에 속하는 모든 질량을 갖는 예측 확률 분포를 구하는 것이라 할수습니다.

 

 

엔트로피, 쿨백리블러 발산, 교차 엔트로피

- 엔트로피 : 정보의 불순도, 무질서의 정도

- 쿨백 리블러 발산 : Kullback-Leibler Divergence : 두 확률 분포 사이의 거리, 차이를 구하는데 사용

- 교차 엔트로피 : 두 확률 분포 사이의 거리

- 참조 링크 : ramees.tistory.com/64

 

 

 

 

 

SVM 대 소프트맥스

 

이 그림으로 소프트맥스 분류기와 SVM 분류기의 차이를 아라봅시다.

 

 이 그림은 한 데이터가 주어졌을때 SVM과 소프트맥스 분류기의 차이를 보여주고 있습니다.

 

계산 결과 같은 스코어 벡터 f(행렬 곱으로 얻은)가 나오고 있는데, 차이점은 점수 f를 어떻게 해석하느냐, 이용하느냐에 차이가 있다고 볼수 있겠습니다.

 

SVM은 이 점수를 클래스별 점수로 해석하고, 비용함수가 올바른 클래스(2번 클래스, 파란색)이 다른 클래스보다 더 높은 점수를 받을 수 있도록 마진을 사용하고 있습니다.(올바른 클래스의 점수가 클 수록 비용이 줄어들 기 때문)

 

 소프트맥스 분류기의 경우 점수를 각 클래스에 대해 정규화되지 않은 로그 확률로 보고 있으며, 이를 정규화를 시키고 올바른 클래스의 로그 확률이 더 높아지도록 만듭니다.(아닌 경우는 낮아지도록) 

 

 

 이 예시에서 최종 손실은 SVM의 경우 1.58, 소프트맥스 분류기의 경우 1.04지만 이 수치끼리는 비교해선 안되고 동일한 분류기와 동일한 데이터에 대해서 계산된 비용 끼리 비교할때만 의미가 있다고 할수 있습니다. 그러니까 가중치를 바꿔가면서 비용 함수로 구한 비용이 줄어드는지 전후 비교하는 것에 사용해야합니다.

 

 

 

 

300x250
728x90

 

 

 

미시건대 저스틴 존슨 교수님 강의에 일부 내용을 약간 추가하여 작성하였습니다.
https://www.youtube.com/watch?v=qcSEP17uKKY&feature=youtu.be

 

 

 

 

 

 

Lec3_Linear_Classifier.pdf
1.00MB

 

 

 

Lec3_Linear_Classifier2.pdf
0.51MB

300x250

+ Recent posts