데이터분석

ISLP 번역 (DEEP LEARNING; CNN)

uncoolpark 2023. 11. 16. 16:53

안녕하세요, 

 

통계학습과 기계학습 분야에서 가장 유명한 교재 중 하나인 ISLR의 파이썬 버젼 ISLP가 출간되었습니다. 

 

An Introduction to Statistical Learning 이며 

로버트 팁시라니 교수님,,, 스탠포드 대학교 통계학의 전설 같은 존재라고 합니다. 

라쏘 방법을 최초로 고안한 분입니다.

아무튼 아래 공식 웹사이트에서 무료로 배포하고 있고, 상당히 이해하기 쉬운 편입니다. 

 

원래는 코드들이 R로 작성이 되었는데 한 달 전에 Python 버전이 출간되었습니다.  

 

https://www.statlearning.com/

 

An Introduction to Statistical Learning

As the scale and scope of data collection continue to increase across virtually all fields, statistical learning has become a critical toolkit for anyone who wishes to understand data. An Introduction to Statistical Learning provides a broad and less techn

www.statlearning.com

 

현재 강의 및 개인적인 공부를 위해 스스로 번역 중입니다.

 

CNN: Convolutional Neural Networks 즉, 합성곱 신경망 부분을 번역 중이며 오역 및 오타 등이 있을 수 있습니다.

 

 

CIFAR100 데이터: 100가지 종류의 이미지 모음 

 

10.3 Convolutional Neural networks (합성곱 신경망) 

 

Neural network 2010년경부터 이미지 분류에서 성과를 거두며 부활했다. 당시 라벨이 붙은 이미지가 거대한 데이터베이스로 축척되고 있었고 클래스의 또한 계속 증가하고 있었다.

Figure 10.5 CIFAR 100 데이터 베이스에서 75가지 이미지를 보여준다. 데이터베이스는 60,000장의 이미지를 20가지 superclass 나누었다 (e.g. 해양 포유류), superclass 다섯가지 클래스가 있다. (비버, 돌고래, 수달, 물개, 고래).

 

이미지는 32x32 픽셀이며 픽셀당 빨강, 초록 그리고 파랑을 나타내는 세가지 8비트 숫자들이 있다. 이미지에 대한 수들은 ‘feature map’이라고 불리는 삼차원 array 분류된다. 처음의 축은 spatial ( 32차원이다), 세 번째는 ‘channel’ 축이며 가지 색을 표현한다. Training set 50,000, test set 10,000장이다.

 

 

‘Convolutional Neural Networks (CNNs)’ 종류들은 이러한 이미지를 분류하도록 발전했고 다양한 범위의 문제들을 해결하는데 대단한 성과를 보였다. CNNs 인간이 이미지를 분류하는 방식을 모방하는데, 이미지에서 목표 class 구별하는 특정한 특징 또는 패턴을 인식하는 방법이다. 섹션에서 우리는 어떻게 CNN 작동하는지 살펴볼 것이다.

 

Figure 10.6 호랑이 캐릭터를 CNN 어떻게 분류하는지 묘사한다.

신경망은 첫번째로 작은 모서리나, 색상과 같은 저수준 feature들을 입력 이미지에서 분류한다. 저수준 feature들은 , 눈과 같은 고수준 feature 결합된다. 이어서, 이러한 고수준 feature 존재 혹은 부재 유무는 주어진 출력 class 확률에 기여한다.

 

 

CNN 어떻게 이런 계층 구조를 형성할까? Convolution 레이어와 pooling 레이어라고 불리는 두가지 특별한 타입의 히든 레이어를 결합한다. Convolution 레이어는 이미지에서 작은 패턴들의 예시를 찾는 반면 pooling 레이어는 이들을 subset으로 고르기 위해 다운샘플한다.

 

최첨단 결과를 달성하기 위해, 현재의 신경망 구조는 많은 convolution and pooling 레이어들을 만든다. 이제 레이어에 대해 알아보자. 

 

 

10.3.1 Convolution Layers 

Convolution 레이어는 많은 convolution filter 이루어진다. 필터는 이미지에서 나타나는 특정 로컬 feature 결정짓는 일종의 템플릿이다. Convolution 필터는 매우 간단한 작업에 의존하는데 이를 convolution이라고 부르며 행렬 원소들을 곱한 값들을 더하고 결과값에 더하는 과정이다. 

 

 

어떻게 동작하는지 이해하기 위해, 간단한 4*3 이미지 예시를 고려해보자.

원본 이미지 = 

이제 2*2 필터 형태를 생각하면 

Convolution filter = 

이미지를 필터로 convolve 하면 결과를 가진다. 

Convolved image= 

예를 들어, 상단 왼쪽의 원소는 이미지 상단 왼쪽의 2*2 부분에 해당하는 원소들에 대해 2*2 필터로 원소들을 곱한 결과값이다. 다른 원소들도 비슷한 방법으로 얻어진다: Convolution 필터는 convolved 이미지를 얻기 위해 원본 이미지의 모든 2*2 하위행렬에 적용된다.

 

원본 이미지의 2*2 하위행렬이 convolution 필터와 유사하다면 convolved 이미지에서 값을 가질 것이다; 반대의 경우 작은 값을 가질 것이다. 따라서, convolved 된된 이미지는 convolution 필터를 결합하는 원본 이미지의 영역들을 강조한다. 2*2 예시로 사용했다; 일반적인 convolution 필터들은 작은 l1*l2 어레이(배열)이며 l1 과 l2는 반드시 동일한 필요는 없는 작은 양수값을 갖는다. 

 

FIGURE 10.7 Convolution 필터들은 이미지에서 지역적인 feature들을 찾아낸다 마치 테두리와 작은 면들과 같은 것이  예시다우리는 좌측 호랑이 이미지에서 시작해서 가운데  가지 작은 convolution 필터를 추가한다. Convolved 이미지들은 원본 이미지의 영역을 필터와 비슷한 세부사항들을 강조한다특정하게상단의 convolved 이미지는 호랑이의 가로 줄무늬들을 강조한다우리는 합성곱 신경망의 입력 레이어로 원본 이미지를 생각할  있고  번째 히든 레이어의 유닛들로 convolved 이미지를 간주할  있다

 

Figure 10.7 좌측의 192*179 호랑이 이미지에 대한 두개의 convolution 필터들의 실제 활용을 나타낸다. convolution 필터는 15*15 대부분 0(검정)이며 수직이거나 수평 이미지에 기인하는 좁은 줄무늬들을 갖는다.

 

필터가 호랑이의 이미지와 convolved , 호랑이의 영역들은 필터를 결합한다 (i.e. 각기 수평 혹은 수직 줄무늬 아니면 테두리를 가진다) 필터는 값이 주어지며 호랑이의 영역들은 작은 값이 주어질 feature 결합하지 않는다.

 

Convolved 이미지들은 오른쪽에 제시되었다. 수평 줄무늬 필터가 수평 줄무니를 골라내고 원본 이미지의 테두리들을 골라낸다, 반면에 수직 줄무늬 필터는 원본 이미지의 수직적 줄무늬와 테두리를 잡아낸다. 

 

 

 

10.7에서 이미지와 개의 필터를 사용했다. CIFAR100 데이터베이스는 32*32 컬러 픽셀을 갖는 이미지이며 우리는 3*3 convolution 필터를 사용한다. 

convolution 레이어에서 우리는 이미지에서 테두리들과 면이 각기 다르고 다양성을 골라내기 위한 필터들의 전체 저장값을 사용한다. 사전 정의된 필터를 사용하는 것은 이미지 처리에 있어서 표준 방식이다. 반면에, CNN 필터들은 특정한 분류 작업을 위해학습되었다. 우리는 필터들의 가중치는 입력 레이어에서 히든 레이어로 가는 파라미터로 간주할 있고, convolved 이미지의 픽셀에 대한 하나의 히든 유닛을 갖는다. 사실은, 파라미터들은 매우 구조화되었고 제약된다. 파라미터들은 입력 이미지에 지역적 패치를 운영하며 주어진 필터에서 같은 가중치들은 이밎비의 모든 가능한 패치들로 재사용 된다재사용된다. (따라서 가중치들은 제약된다) 

우리는 이제 추가적인 세부사항을 있다. 

  • 입력 이미지가 색깔이 있기 때문에, 삼차원 feature (배열) 표현하는 가지 채널을 갖는다. 채널은 2차원 (32*32) 피처 - 개는 빨강, 하나는 초록, 그리고 하나는 파랑. 하나의 단독 convolution 필터는 또한 개의 채널을 가지며, 색깔 하나이면서 가능성있는 다른 필터 가중치를 포함한 3*3차원으로 이루어져 있다. 합성곱의 결과는 이차원 출력 피처맵을 형성하기위해 더해진다. 시점에서 색상 정보는 이미 사용되었고 서브시퀀트 레이어는 합성곱에서 역할을 제외하고는 전달되지 않았다는 것을 알아둬라. 
  • 만약 우리가 K 다른 합성곱 필터를 처음 히든 레이어로 사용한다면 우리는 K 2차원 출력 피처 맵을 가지며, 각자 단일 삼차원 피처맵으로 사용된다. 그리고 K개의 출력 피처맵을 분리된 정보 채널로 간주하는데 그래서 원본 입력 피처맵의 . 컬러 채널과 상반되는 K 개의 채널을 갖는다. 삼차원 피처맵은 단순 신경망 히든 레이어의 활성 함수와 같으며 부분적 구조화 방식에 있어 수집되거나 활용되는 것을 제외한다. 
  • 일반적으로 ReLU 활성 함수를 합성곱 이미지에 적용한다. 단계는 가끔 합성곱 신경망에서 분리 레이어로 간주되며 떄 detector 레이어라고 부른다.

 

10.3.2 Pooling Layers 

Pooling 레이어는 이미지를 작은 요약 이미지로 전달하는 방법을 제공한다. Pooling 수행하기 위해 가능한 여러 방법들이 있지만, max pooling 방식은 -overlapping 2*2 픽셀 블록을 블록에 최대값으로 사용하며 요약한다. 이는 방향의 팩터로 이미지의 용량을 줄이고 location invariance 가진다: i.e. 블록에서 픽셀중 하나에 값이 있는 , 전체 블록은 줄어든 이미지에서 값으로 등록된다. 

여기 max pooling 단순한 예시가 있다:

10.3.3 Architecture of a Convolutional Neural Network

지금까지 단일 합성곱 레이어를 정의했다. - 필터는 새로운 이차원 피처맵을 생성한다. 합성곱 레이어에서 합성곱 필터의 수는 섹션10.2. 에서확인한 탑입의 신경망을 완전-연결하는 특정 히든 레이어에서 유닛들의 수와 비슷하다. 수들은 삼차원 피처맵을 낳는 채널의 수를 정한다. Pooling 레이어에 대해 논의했으며 삼차원 피처맵의 이차원을 줄이는 것이다. Figure 10.8 CIFAR100 이미지 분류 작업을 위한 CNN 전형적인 구조를 나타낸다. 

입력 레이어에서 우리는 색이 있는 이미지의 삼차원 피처 맵을 보고 채널 축은 색상을 32*32 픽셀 2차원 피처맵에 의해 색상을 표현한다. 컨볼루션 필터는 새로운 채널을 첫번째 히든 레이어에 생성하고 32*32 피처맵을 갖는다. 합성곱 단계를 지나, 우리는 이제 새로운이미지 가지는데; 세가지 색의 입력 채널보다 상당히 많은 채널의 피처맵이다. (예시에서는 여섯개이며, 우리가 6개의 합성곱 필터를 사용했기 때문이다.) 

 

FIGURE 10.8 CIFAR100 분류 작업을 위한 딥 CNN의 구조다. 컨볼루션 레이어들은 2*2 맥스 풀링 레이어로 나뉘고, 각 차원마다 2개의 팩터로 크기를 줄여준다.

 

맥스- 레이어에 의해 채널의 피처맵은 4가지 요인으로 사이즈를 줄인다: 차원당 .

convovle-then-pool 시퀀스는 다음 레이어로 반복된다.

  • 하위 컨볼브 레이어는 첫번째 것과 유사하다. 이전의 레이어에서 삼차원 피처맵을 입력으로 받고 그것을 단일 멀티-채널 이미지처럼 반응한다. 합성곱 필터는 피처맵 만큼 많은 채널들을 학습할 있다.
  • 채널 피처맵이 레이어 이후 사이즈가 감소하기 때문에, 보통 다음 convolve 레이어의 필터 수를 증가시켜서 보완한다. 
  • 가끔 풀 레이어 이전에 몇 컨볼브 레이어를 반복한다. 이는 필터의 차원을 효과적으로 증가시킨다.