728x90

 

 

4.3.4 다중 로지스틱 회귀 Multiple Logistic Regression

 

 이번에는 입력 변수가 여러개인 경우 이진 분류하는 문제를 생각해봅시다. 3장에서 본 다중 선형회귀에서 확장시켰던것처럼 식 (4.4)를 아래와 같이 일반화 시켜 나타낼수 있을 거에요.

 여기서 X = ($X_{1}$, . . ., $X_{p}$)로 p는 입력 변수의 개수가 되겠죠. 그러면 이 식 4.6은 아래와 같이 정리 할수 있을거에요.

 4.3.2장에서 본것 처럼 최대 가능도법을 사용해서 계수 $\beta_{0}$, . . .,  $\beta_{p}$들을 추정하면 되겠습니다.

 

 

표 4.3 채무 불이행 데이터셋에서 카드 대금, 수입, 학셩 여부로 채무 불이행 확률을 예측한 로지스틱 회귀 모델의 계수 추정치들. 학생 상태는 가변수로 인코딩 되었음. 

 표 4.3은 카드 대금 balance와 수입 income, 학생 여부를 이용해서 채무 불이행 여부, 디폴트 여부의 확률을 예측하는 로지스틱 회귀 모델의 계수를 추정한 결과를 보여주고 있어요. 결과를 보면 카드 대금과 학생인 경우의 가변수에 대한 p value가 매우 낮으므로 이 변수들이 디폴트 확률과 연관되어 있는걸 알 수 있습니다.  하지만 학생인 경우의 계수 추정치가 - 0.6468로 음수이므로 학생이 아닌 경우보다 디폴트가 될 확률이 덜하다는 얘기가 됩니다.

 



 

 이건 표 4.2에서 가변수가 양수가 나온것과는 좀 다른데, 어떻게 표 4.2에서 디폴트 확률이 증가하도록 하던게 표 4.3에서는 디폴트 확률을 줄이도록 하게 만들었을까요?

 

그림 4.3 혼합된 디폴트 데이터. 좌측 : 주황색은 학생인 경우 디폴트가 될 확률, 파란색은 학생이 아닌 경우 디폴트가 될 확률. 직선은 카드 대금이 주어질때 디폴트 확률에 대한 함수이며, 평행 점선은 전체에서 디폴트 비율을 나타냅니다. 우측 : 주황색은 학생인 경우 카드 대금에 대한 박스 플롯, 파란색은 학생이 아닌경우 카드 대금에대한 박스 플롯입니다.

 그림 4.3의 왼쪽 판낼은 이 역설적인 상황을 그래프로 보여주고 있는데, 오랜지 색과 파란색 직선은 카드 대금이 주어질때 각각 학생과 학생이 아닌 경우의 평균적인 디폴트 비율을 보여주고 있어요.

 

 이 다중 로지스틱 회귀 모델에서 학생에 대한 계수가 음수라는 것은 (잔금과 수입이 변하지 않았을때) 학생이 아닌 경우보다 디폴트가 될 가능성이 낮다는걸 의미 합니다.

 

 하지만 이 플롯의 바닥 근처에 있는 평행 점선은 카드 대금과 수입 전체에서 학생과 학생이 아닌 경우의 평균적인 디폴트 비율을 보여주고 있는데, 직선과는 다르게 전체 학생의 디폴트 비율이 비학생의 디폴트 비율보다 높죠.

 

 그래서 표 4.2의 단순 로지스틱 회귀 모델에서 학생에 대한 계수가 양수값이 되요.

 

 그림 4.3의 오른쪽 판낼은 이 불일치한 상황에 대해 참고가 되는데, 여기서 학생과 카드 대금이 상관관계를 가지는걸 볼 수 있어요. 학생은 빚이 전반적으로 많아 디폴트가 될 확률이 더 높을거에요. 다시 말하면 학생들은 카드 대금이 클 가능성이 많아 그림 4.3의 높은 디폴트 비율이 나오게 되요.

 

 그래서 카드 대금이 같을때 학생 개인으로 보면 비학생보다 디폴트가 될 확률이 낮지만, 학생 전체적으로 카드 대금이 많다보니 비학생보다 디폴트 비율이 높게 나오게되요.

 

 이는 신용카드 회사에서 신용을 제공할지 여부를 판단하는데 중요한 일이라고 할수 있을 겁니다. 한 학생의 신용 카드 대금에 대한 정보가 없다면 비학생보다 학생이 더 위험할 거에요.(학생은 기본적으로 빚이 많으니) 하지만 학생과 비학생의 가드 대금이 같은 경우라면 학생이 덜 위험할 겁니다. (빚이 적은 학생이다.)

 

 

정리

- 학생 여부에 따른 디폴트 여부만 본다면 (학생이 기본적으로 빚이 많으므로) 학생이 디폴트가 될 학률이 크다.

- 학생 여부와 카드 대금을 고려 한다면 비학생보다 디폴트가 될 확률이 낮다.

 

 

 이 간단한 예제를 통해서 다른 입력 변수들 끼리 연관 되어 있을때 입력 변수를 하나만 써서 회귀 모델을 사용하는 경우 생기는 위험들을 알아볼 수 있었습니다. 선형 회귀의 경우 하나의 입력 변수 만으로 얻은 결과는 (특히 입력 변수들 끼리 상관관계가 있을때) 여러개의 입력 변수를 사용한 경우와 상당히 달랐었죠. 그림 4.3에서 보았던 이런 현상을 confounding라고 하며 여기서는 혼재라고 적겟습니다.

 

 

 표 4.3의 회귀 계계수 추정치를 식 (4.7)에 넣어 예측을 할수 있게 되었습니다. 만약 카드 대금이 $1,500이고, 수입이 $40,000인 학생의 경우 디폴트가 될 확률은 아래와 같을 거에요.

 

 하지만 같은 카드 대금과 수입을 가지고 있는 비학생의 경우 디폴트가 될 확률을 추정하면 아래와 같이 구할수가 있겠습니다.

 

 

 

 

4.3.5 클래스가 2개 이상일떄 로지스틱 회귀  Logistic Regression for > 2 response classes

 

 우리가 2개 이상의 경우를 분류해야하는 상황도 있을 겁니다. 예를들어 4.2장에서 봤던 응급실에서 질병 medical condition에 대해 3 카테고리가 있었죠. 뇌졸증 stroke, 약물 과다 복용 drug overdose, 간질 발작 epileptic seizure. 이 경우 Pr(Y = stroke | X), Pr(Y = drug overdose| X) 이 두 모델을 만들수 있을거에요 Pr(Y = epileptice seziure | X) = 1 - Pr(Y = stroke | X) -  Pr(Y = drug overdose| X) 이므로.

 

 클래스가 2개인 (Yes, No) 로지스틱 회귀 모델은 이전 장에서 다루었으니, 이걸 다중 클래스의 경우로 확장시키면 되겠습니다. 하지만 이 방법들은 잘 사용되지 않아요. 왜냐면 다음 장에서 이야기 할 판별 분석 discriminant analysis가 다중 클래스 분류에 널리 사용되고 있거든요. 그래서 로지스틱 회귀를 이용한 다중 클래스 분류에 대해서 자세히 다루지는 않겠습니다.

 

 

 

 

 

4.4. 선형 판별 분석 Linear Discriminant Analysis

 

 로지스틱 회귀는 로지스틱 함수로 Pr(Y = k | X = x)를 직접적으로 설계하는 방법이었습니다. 통계적인 용어를 사용하자면 입력 변수(들)이 주어질때 반응 변수 Y에 대한 조건부 분포를 설계 했다고 할수 있어요.

(조건부 확률 분포 모델을 만들어 x가 주어질때 k=1/default인 경우에 대한 확률들을 구하였었음.)

 

 이번에는 이를 대신하는 방법으로 확률들을 약간 간접적으로 추정하는 방법을 다뤄봅시다. 우리는 반응 변수 Y가 주어질떄 입력 X의 분포를 모델링할건데 이걸 베이즈 정리로 뒤집어 Pr(Y = k | X = x)를 추정할거에요. 여기서 확률 분포가 정규 분포라고 가정을 하면 로지스틱 회귀와 비슷한 모델이 될겁니다.

 

 왜 로지스틱 회귀 말고 이런 방법이 필요할까요? 여기에는 다음과 같은 이유들이 있습니다.

 

- 클래스들이 잘 나누어져있을때, 로지스틱 회귀 모델의 파라미터 추정치는 매우 불안정해요. 선형 판별 분석은 그런 문제가 생기지가 않습니다.

- n이 작고, 각 클래스에 대한 X의 분포가 정규분포라면 선형 판별 분석이 로지스틱 회귀 모델보다 더 안정적이에요.

- 4.3.5장에서 언급했지만 클래스가 2개 이상인 경우 선형 판별 분석이 널리 사용되고 있습니다.

 

 

 

 

 

4.4.1 베이즈 정리를 분류에 사용해자 Using Bayes Theorem for Classification

 한번 K >=2일때, K개의 클래스 중 하나로 관측치를 분류하고 싶다고 가정해봅시다. 다시 말하자면 질적 반응변수/카테고리 반응 변수 Y는 K개의 구분되고, 순서를 갖지 않는 값을 가지게 되요. $\pi_{k}$를 임의의 관측치가 k번째 클래스에 속할 확률을 사전 확률 prior probability이라고 합시다. 이 확률은 주어진 관측치가 k번쨰 카테고리에 속할 확률을 말해요.

 

 $f_{k}$(x) $\equiv$ Pr(X = x | Y = k)는 관측치가 k번째 클래스에 속할때 X의 밀도 함수라고 합시다. 다시 말하면 $f_{k}$(x)는 k에 속하는 관측치가 X $\approx$ x일 확률이 크다면 확률 밀도 $f_{k}$(x)가 상대적으로 클것이고, k에 속하는 관측치가 X $\approx$ x일 가능성이 낮다면 적을겁니다. 이를 베이즈 정리로 나타내면 아래와 같아요.

 

  이전에 우리가 정의한대로 $p_{k}$(X) = Pr(Y= k | X)로 사용하겠습니다. 이 방식은 4.3.1장에서 $p_{k}$(X)를 직접적으로 계산한것 대신에 추정한 사전확률 $\pi_{k}$와 밀도 함수 $f_{k}$(X)를 식 (4.10)에 대입해서 계산할수 있어요. 일반적으로 사전 확률 $\pi_{k}$는 추정하기 쉬운데, 모집단으로부터 Y의 샘플들을 가지고 있으면 k번째 클래스의 비율로 계산하면 되겠습니다. 하지만 밀도 함수 $f_{k}$(X)를 추정하는건 어떤 단순한 밀도 함수의 형태를 가정하지 않는다면 어렵습니다.

 

 $p_{k}$(x)는 관측치 X = x가 주어질때 k번째 클래스에 속할 확률로 사전 확률 posterior probability이라고 하겠습니다. 이건 관측치의 입력 값들이 주어질때 해당 관측치가 k 클래스에 속하는 확률을 나타내요.

 

 우린 2장에서 배이즈 분류기가 $p_{k}$(X)가 가장 큰 클래스로 관측치를 분류하는 모델로, 모든 분류기들 중에서 에러율이 가장 낮다는걸 봤었습니다. 그러므로 $f_{k}$(X)를 추정할 방법을 찾을수 있으면 우리는 베이즈 분류기에 가까운 분류기를 만들수가 있어요. 이게 이번 장에서 다룰 주제가 되겠습니다.

 

 

 

 

 

4.4.2 p = 1인 경우 선형 판별 분석 Linear Discriminant Analysis for p = 1

 

 이번에는 p = 1인 경우 즉 입력 변수가 하나인 경우를 가정하여 살펴보겠습니다. 우리는 $p_{k}(x)를 예측하기 위해서 $식 (4. 10)에다가 대입시킬 $f_{k}$(x)를 추정해서 구하고자 합니다. 그러면 $p_{k}$(x)를 가장 크게 만드는 클래스 k로 분류를 하면 되요. $f_{k}$(x)를 추정하기 위해서 함수적 형태를 가정해야 합니다.

 한번 $f_{k}$(x)를 정규, 가우시안 분포라고 가정할게요. 일 차원인 경우 정규 분포는 다음과 같은 형태로 $\mu_{k}$, $\sigma^{2}_{k}$는 k번쨰 클래스에 대한 평균과 분산을 나타낼 거에요. $\sigma^{2}_{1}$ = . . . = $\sigma^{2}_{K}$로 가정하면 K개의 클래스 전체가 분산을 공유한다는 뜻이며, $\sigma^{2}$로 단순화 해서 표기할께요. 이렇게 정리하여 식 (4. 11)을 식 (4.10)에다가 대입시켜 아래와 같이 정리 할 수 있겠습니다.

 

 식 (4.12)에서 $\pi_{k}$는 관측치가 k번째 클래스에 속할 사전확률이지 $\pi$ $\approx$ 3.14159가 아닙니다. 베이즈 분류기는 관측치 X = x가 있을때 (4.12)를 최대로 하는 클래스로 분류해줍니다. (4.12)에다가 로그를 취하고 항을 정리하면 클래스 k에 속하는 확률은 아래와 같이 정리할 수 있어요.

 K = 2이고 $\pi_{1}$ = $\pi_{2}$인 예시를 들어봅시다. 그러면 베이즈 분류기는 관측치를 2x($\mu_{1}$ - $\mu_{2}$) > $\mu^{2}_{1} $ - $\mu^{2}_{2}$인 경우 클래스 1로 분류할거에요. 그렇지 않으면 클래스 2로 분류 하구요. 이렇게 되면 베이즈 결정 경계 Bayes Decision boundary는 아래의 지점이 됩니다.

 

 

 이 예시는 그림 4.4의 왼쪽 판낼에서 볼 수 있어요. K = 2이고, 우리는 k에 대한 확률 밀도 함수 $f_{1}$(x)와 $f_{2}$(x)가 정규 분포를 따르고, 두 정규분포를 다르는 확률 밀도 함수가 분산이 동일하다고 가정해서 위와 같은 형태가 나오게 되요. 그리고 이 두 밀도 함수의 평균과 분산 파라미터는 $\mu_{1}$ = -1.25, $\mu_{2}$ = 1.25,  $\sigma^{2}_{1}$ =  = $\sigma^{2}_{2}$ = 1이 됩니다.

그림 4.4 왼쪽 : 두 개의 1차원 정규 밀도 함수. 점선은 베이즈 결정 경계를 보여주고 있습니다. 우측은 두 클래스에 속하는 관측치 20개의 히스토그램을 보여주고 있어요. 베이즈 결정 경계는 수직 점선으로 나타나고 있고, 직선은 훈련 데이터셋으로 추정한 LDA 선형 판별 경계를 보여주고 있습니다.

 이 두 밀도 함수에는 겹치는 부분이 존재하여 관측치가 어느 클래스에 속하는지 불확실성을 가지고 있어요. 우리가 관측치들이 각 클래스에 속할 확률들이 같다고 가정하면 - $\pi_{1}$ = $\pi_{2}$ = 0.5처럼, 베이즈 분류기는 x < 0이면 관측치를 클래스 1, 아니면 클래스 2로 분류할 수 있을거에요.

 

 지금 경우에는 우리가 X가 각 클래스에 대한 가우시안 분포로부터 샘플링 된걸 알고있으며, 모분산에 대한 파라미터들을 알고있다보니 베이즈 분류기를 계산할 수 있었습니다.

 

 하지만 현실에서는 샘플 X가 각 클래스에 대한 가우시안 분포로부터 샘플되었다고 가정을 하더라도, $\mu_{1}$, . . ., $\mu_{K}$, $\pi_{1}$, .. ., $\pi_{k}$, $\sigma^{2}$같은 파라미터들을 직접 추정해야해요 우리는 모 분산의 성질을 알 수 없으니까요.

 

 선형 판별 분석 LDA은 $\pi_{k}$, $\mu{k}$, $\sigma^{2}$ 추정치들을 식 (4.13)에 대입해서 베이즈 분류기를 근사시키는 방법이에요. 이 추정치들은 주로 아래의 식으로 계산하며 n은 훈련 관측치의 총 갯수이고 $n_{k}$는 k번쨰 클래스에 속하는 관측치의 계수를 나타내요.

 

 

 $\mu_{k}$ 추정량은 쉽게 k번쨰 클래스에 속하는 모든 관측치들을 평균을 해서 구할수가 있고, $\sigma^{2}$는 각 K클래스에 대한 분산들의 가중치를 고려한 평균으로 볼수 있겠습니다. 그리고 클래스에 대한 사전 지식이 있는 경우 $\pi_{1}$, . . ., $\pi_{K}$를 직접적으로 사용할 수 있어요. 이런 추가적인 정보가 없다면 LDA는 $\pi_{k}$를 k번쨰 클래스에 속하는 관측치의 비율 그러니까 아래와 같이 추정해서 쓸수도 있겠습니다.

 

LDA 분류기는 식 (4.15), (4.16)을 (4.13)에 대입해서, X = x가 주어질떄 확률이 최대가 되는 클래스로 분류를 해줘요.

이 분류기의 이름에서 선형이란 단어는 식 (4.17)의 판별 함수 $\widehat{\delta}_{k}$가  x에 대한 선형 함수라는 사실에서 따왔습니다.(x에 대한 복잡한 함수의 반대되는 개념)

 

 그림 4.4의 오른쪽 판낼은 각 클래스로부터 얻은 20개의 샘플 데이터의 히스토그램을 보여주고 있어요. LDA를 구현하기 위해서 식 (4.15)와 (4.16)으로 $\pi_{k}$, $\mu_{k}$, $\sigma^{2}$를 추정하고, 그러고나면 검은 직선으로 나오는 결정 경계를 계산할 수가 있어요. 이 결정 경계는 관측치가 가장 큰 확률로 속하는 클래스에 잘 분류되도록 하는 하는 지점이에요(4.17).

 

 이 직선의 좌측에 있는 모든 점들은 녹색 클래스이며 우측에 있는 모든 점들은 보라색 클래스라고 할께요. $n_{1}$ = $n_{2}$ = 20이고, $\widehat{\pi}_{1}$ = $\widehat{\pi}_{2}$일 때, 결정 경계는 두 클래스에 대한 샘플들의 중간 지점인 ($\widehat{\mu}_{1}$, $\widehat{\mu}_{2}$)/2 가 될거에요. 

 

 이 그림에서 선형 판별 분석 결정 경계는 최적의 베이즈 결정 경계보다 약간만 왼쪽에 가 있는데 최적의 결과인 베이즈 결정 경계가 ($\mu_{1}$ + $\mu_{2}$)/2인것과는 큰 차이가 나지 않죠. 그러면 얼마나 선형 판별 분석이 잘 수행되었을까요? 이건 시뮬레이션된 데이터이다보니 테스트 관측치를 많이 만들수가 있는데, 그 결과 베이즈 에러율과 LDA 에러율은 각각 10.6%, 11.1%가 되었습니다. 즉 LDA분류기의 에러율은 가장 작은 에러율(베이즈 분류기의 에러율)보다 0.5%밖에 크지 않다는 거에요. 그래서 LDA가 주어진 데이터에 잘 동작한다고 볼 수 있겠습니다.

 

 

 다시 반복하자면 LDA 분류기는 각 클래스에 속하는 관측치들이 특정 평균 벡터와 공통의 분산 $\sigma^{2}$를 갖는 정규분포로 부터 샘플링되었다고 가정하고, 이 파라미터들을 추정하여 베이즈 분류기에 넣어 주어진 입력이 어떤 클래스에 속하는지 판단하는 방법이라 할 수 있어요. 4.4.4장에서는 k번쨰 클래스의 관측치가 클래스별 분산 $\sigma^{2}_{k}$를 가지는 것을 허용 시킴으로서 덜 견고한 가정을 사용하는 경우를 고민해봅시다.

 

 

 

 

 

 

4.4.3 p > 1인 경우 선형 판별 분석 Linear Discriminant Analysis for p > 1

 

 이번에는 입력 변수가 여러개인 경우로 선형 판별 분석 분류기를 확장시켜봅시다 X = ($X_{1}$, $X_{2}$. . . ., $X_{p}$) 가 다변량 가우시안 분포(다변량 정규 분포)를 따른다고 가정을 하면, 평균 벡터와 공분산 행렬을 가지게 되겠죠. 한번 이 분포에 대해서 간단히 살펴봅시다.

 

그림 4.5 p =2 인 다변량 가우시안 밀도 함수를 모여주고 있습니다. 좌측 : 두 입력 변수가 상관관계를 갖지 않은 경우. 우측 : 두 변수가 0.7의 상관관계를 갖는 경우.

 다변량 정규 분포 multivariate gaussian distribution은 각각의 입력 변수들이 일차원 정규 분포를 따른다고 가정하고 있습니다. (4.11)처럼 각 입력벼수 쌍들끼리는 상관관계를 가지고 있구요. 그림 4.5에서 p = 2인 경우 다변량 가우시안 분포의 예시를 볼 수 있는데, 한 지점의 높이는 $x_{1}$와 $x_{2}$가 해당 지점에 있을 확률을 나타냅니다. 두 판낼다 $X_{1}$ 축으로만 보던가 $X_{2}$으로만 보던간에 일차원 정규 분포 형태로 볼 수 있어요.

 

 그림 4.5의 왼쪽 판낼은 Var($X_{1}$) = Var($X_{2}$)인 경우로 Cor($X_{1}$, $X_{2}$) = 0이 됩니다. 이 표면은 종 형태 bell shape 특성을 가지는게 되요. 하지만 두 변수간에 상관관계가 존재한다거나 분산이 같지 않으면 종 형태가 왜곡될수 있는데, 그림 4.5의 오른쪽 판낼에서 볼수 있겠습니다. 이 상황에서 종의 바닥이 원형보다는 타원 형태로 되어있어요.

 

 p 차원 랜덤 변수 X가 다변량 가우시안 분포를 따르는 경우 이를 X ~ N($\mu$, $\Sigma$)로 적을수 있고, 여기서 E(X) = $\mu$는 X의 평균이고, Cov(X) = $\Sigma$는 확률 변수 X에 대한 p x p 개의 공분산 행렬이 됩니다. 이걸 정리하면 다변량 가우시안 밀도 함수는 아래와 같이 정의 할 수 있어요.

 p > 1인 경우에 LDA 분류기는 $\mu_{k}$를 클래스별 평균 백터, $\Sigma$는 모든 클래스에 대한 공분산 행렬이라고고 할때 k번째 클래스에대한 관측치는 N($\mu_{k}$, $\Sigma$)인 다변량 가우시안 분포를 따른다고 가정을 하고 있어요. k번째 클래스에 대한 밀도 함수 $f_{k}$(X = x)를 (4.10)에 대입하여 대수적으로 정리를 하면 베이즈 분류기는 관측치 X = x를 아래 식의 결과가 가장 크게 되는 클래스에 속하게 될겁니다. 이 식은 (4.13)의 벡터/행렬 버전이라고 할 수 있어요.

그림 4.6 클래스가 3개인 예시. 각 클래스에 속하는 관측치들은 p = 2인 다변량 가우시안 분포를 따르고 있다. 좌측 : 타원들이 95%의 확률로 세 클래스에 속하는것들을 포함시키고 있다. 점선들은 베이즈 분류 경계를 나타낸다. 우측 : 각 클래스당 20개의 관측치가 만들어져서 LDA 결정 경계가 직선의 형태로 나오고 있다. 여기서도 베이즈 결정 경계가 점선으로 표현되고 있다.

 그림 4.6의 왼쪽 예시를 보면 클래스가 3개인 똑같이 나눠진 그림을 보여주고 있는데, 여기서 세 타원은 세 클래스 각각에 95%확률로 속할 범위를 보여주고 있습니다. 점선은 베이즈 결정 경계이구요. 여기서 세 직선은 베이즈 결정 경계로 클래스 1과 클래스 2를 분할하는 직선 하나, 클래스 1과 클래스 3을 분할하는 직선 하나, 클래스 2와 클래스 3을 분할하는 직선 하나로 세 베이즈 결정 경계들이 입력 공간을 3영역으로 분할시켜주고, 관측치가 어느 영역에 속하는지를 보고 관측치를 분류해요.

 

 

 하지만 우리는 실제로 알수 없는 파라미터들인 $\mu_{1}$, . . ., $\mu_{K}$와 $\pi_{1}$, . . ., $\pi_{K}$, $\Sigma$를 추정해내야 합니다. 이 추정치들은 (4.15)에서 일차원에서 했던것처럼 하면 되요. 그래고 새로운 관측치 X = x가 주어지면 이거를 구한 추정치들을 (4.19)에다가 넣고, $\widehat{\delta}_{k}$이 가장 커지는 클래스에다가 분류 하면 되겠습니다.

 

 여기서 (4.19)의 $\delta_{k}$(x)가 x에 대한 선형 함수의 형태를 가지고 있다 보니 LDA 결정 규칙 decision rule은 x가 각 요소들과 선형 결합에만 의존/영향을 받아 정해지게 되요. 이런 이유로 LDA에서 선형이라는 단어가 사용되고 있습니다.

 

 그림 4.6의 오른쪽 판낼은 세 클래스에 속하는 각각 20개의 관측치들을 보여주고 있어요. 그리고 LDA결정 경계는 직선과 같은 형태로 다오고 있는데, LDA 결정 경계들이 꽤 베이즈 결정 경계에 가까운걸 볼수 있죠. 베이즈와 LDA 분류기의테스트 에러율도 0.0746과 0.0770으로 비슷한걸 알수 있으며 LDA가 이 데이터들을 잘 분류한다고 볼 수 있겠습니다.

 

 그러면 LDA를 채무 불이행 데이터셋에 적용시켜 본다고 할꼐요. LDA모델은 10,000개의 훈련 샘플들을 학습을 했을때 훈련 에러율이 2.75%정도가 나왔는데, 이정도면 꽤 낮다고 볼수 있지만 두가지 주의사항이 있습니다.

 

- 가장 먼저, 훈련 에러율인 일반적으로 테스트 에러율보다 낮습니다. 다시 말하면 이 분류기는 새로운 데이터를 예측할때 성능이 더 떨어지게 될거라는 말인데 이 이유는 훈련 데이터셋만 보고 파라미터들을 조정했기 때문이에요. 파라미터의 개수 p와 샘플 개수 n의 비율이 커질수록 오버피팅될 가능성이 더 높아 집니다. 하지만 이 경우에는 p = 2이고, n = 10, 000이다보니 그럴 문제는 없을거에요.

 

- 두번째로 훈련데이터의 3.3%만 채무 불이행이 되었다보니, 사람의 카드 대금이나 학생 여부를 고려하지 않더라도 디폴트가 되지않았다고 하는 널분류기또한 훈련 에러율이 3.3%가 나올거에요. 다시 말하면 널 분류기가 LDA 훈련 에러율 2.75보다 훈련 에러율 3.3으로 약간만 높게 나옵니다.

 

이후에는 혼동 행렬과 ROC커브 등에 나오나 시간 관계 상 생략

 

 

 

 

 

4.4.4 이차 판별 분석 Quadratic Discriminant Analysis

 

 지금까지 각 관측치들이 다변량 가우시안 분포를 따른다고 가정하는 LDA에 대해서 살펴봤었습니다. 이차 판별 분석 Quadratic discriminant analysis (QDA)는 이를 대신할수 잇는 방법인데, LDA와 마찬카지로 QDA 분류기도 각 클래스에 속하는 관측치들이 가우시안 분포를 따른다고 가정을하고, 파라미터 추정치를 베이즈 정리에 대입하여 예측을 하고 있어요.

 

 하지만 LDA와 다르게 QDA는 각 클래스가 고유의 공분산 행렬을 가지고 있다고 가정을 해서 각 클래스에대한 관측치는 X ~ N($\mu_{k}$, $\Sigma_{k}$)를 따른다고 봅니다. 여기서 $\Sigma_{k}$는 k번쨰 클래스의 공분산 행렬을 나타내요. 이 가정에 따라서 베이즈 분류기는 X = x가 아래의 $\delta_{k}$(x)를 가장 크게 하는 클래스로 분류하게 되요.

 그래서 이차 판별 분석 분류기는 $\Sigma_{k}$, $\mu_{k}$, $\pi_{k}$를 추정해서 (4.23)에 대입하여 분류기를 만들고, 관측치 X =x가 가장 크게 하는 클래스로 분류를 시켜요. (4.19)와 다르게 (4.23)은 x에 대한 이차 함수의 형태로 나타나다보니 QDA가 이차 판별 분석이라는 이름을 가지게 되었습니다.

 

 K개의 클래스가 공통 공분산을 가진다(선형 판별 분석) 혹은 가지지 않는다(이차 판별 분석)이란 가정이 왜 중요한 건가요? 다시 말하면 어쩔때 LDA가 좋고, QDA가 좋은걸가요? 이에 대한 대답은 편향 분산 길항 관계에 달려있습니다. p 개의 입력 변수들이 있을때 공분산 행렬을 추정하기 위해서는 p(p+1)/2개의  파라미터들이 필요로해요.

 

 QDA는 각 클래스에 대해 개별적인 공분산 행렬을 추정하다보니 총 K p(p + 1) / 2개의 파라미터들이 필요하죠. 50개의 입력변수가 주어진 경우 1,275개의 아주 많은 파라미터들이 사용될거에요. 그래서 K 클래스가 같은 공분산 행렬을 공유한다고 가정 함으로서, LDA 모델은 x에 대해 선형적인 형태가 되어 추정하는데 Kp개의 선형 계수들만 사용하면 됩니다.

 

 결과적으로 LDA는 QDA보다 덜 유연한 분류기이고, 적은 변동을 다룰수 있지만 예측 성능(여기서 말하는건 정확도보다는 속도를 말하는것 같음)를 개선할수 있지만 이건 길항 관계/상쇄 관계가 있어요. K 클래스가 공통 공분산을 가진다는 LDA의 가정이 올바르지 않은 경우에는 LDA가 편향이 심하게 나와 성능이 떨어지겠죠.

 

 다시말하면 LDA는 훈련 관측치가 적고, 다뤄야 할 분산들을 줄이는게 중요한 경우에 LDA가 QDA보다 더 나은 선택이라고 할수 있어요. 반대로 훈련 데이터셋이 아주 크고, 분류기의 변량이 중요한 문제가 아니거나 K 클래스의 공통 공분산을 사용해서는 안되는 경우 QDA를 사용하는게 좋습니다.

 

그림 4.9 좌측 : 두 클래스의 분산이 동일한 베이즈(보라색 점선), LDA(검은 점선), QDA(녹색 직선) 결정 경계를 보여주고 있습니다. 그늘진 공간은 QDA 결정 규칙을 보여주고 있어요. 베이즈 선형이다보니 QDA보다 LDA가 베이즈 분류기를 더 잘 근사화 시키고 있어요. 우측 : 두 클래스의공분산이 동일하지 않다고 할때의 경우로 베이즈 결정경계가 비선형이다보니 LDA보다 QDA가 더 잘 근사시키고 있어요.

 

 그림 4.9는 두가지 시나리오에서 LDA와 QDA의 성능을 보여주고 있습니다. 좌측 그림은 두 가우시안 클래스가 $X_{1}$, $X_{2}$ 사이에 0.7의 공통 상관관계를 가지고 있는 경우를 보여주고 있는데, 여기서는 베이즈 결정 경계가 선형이다보니 LDA 결정 경계가 더 잘 근사시키고 있어요. 하지만 QDA 결정 경계는 

 

 반대로 우측 그림은 오랜지색 클래스는 변수간의 상관 관계가 0.7이고, 파란색 클래스는 -0.7의 상관 관계를 갖는 경우를 보여주고 있는데, 여기선 베이즈 결정 경계가 이차적이다보니 QDA가 LDA보다 더 정확하게 이 경계를 근사시키고 있죠.

 

 

 

 

300x250
728x90

 

 

 

4. 분류 Classification

 

 지난 3장에서는 선형 회귀 모델에 대해서 이야기 하였습니다. 회귀 모델에서 반응 변수 Y는 양적 변수였었죠. 하지만 반응 변수가 질적 변수인 경우도 많이 있어요. 예를들면 눈의 색깔도 질적 변수로 파란색, 갈색, 녹색같은게 있겠죠. 종종 이런 질적 변수 qualitative variaables를 카테고리 categorical이라고 부르기도 해요. 그리서 이런 용어들을 자주 사용할거고 이번 장에서는 질적 반응, 카테고리를 예측하는 방법들 즉 분류 기법에 대해서 배워봅시다.

 

 주어진 데이터, 관측된 데이터, 입력 데이터 x를 가지고 질적 반응 변수, 카테고리를 예측하는일을 분류 라고 부릅니다. 왜냐면 주어진 데이터를 가지고 이게 어느 카테고리 혹은 클래스에 속하는지를 다루거든요. 하지만 분류를 하기 위해서 우선은 어디에 속하는지 판단하기 위해서 각 카테고리별 확률을 예측하여 봅시다. 그러면 이건 회귀적인 방법을 사용한다고 볼수 있겠죠.

 

 질적 반응을 예측하는데 사용가능한 아주 많은 분류 기법들, 분류기들이 있는데 우선 2.1.5, 2.2.3장에서 몇가지를 살펴보려고 합니다. 이번 장에서 가장 널리 사용되는 분류기인 로지스틱 회귀 logistic regression과 선형 판별 분석 linear discriminant anlaysis 그리고 최근접 이웃 K-nearest neighbor에 대해서 이야기해봅시다. 그리고 차후 챕터에서 일반화 가산 모델 generalized additive models(7장), 트리 모델, 랜덤 포레스트, 부스팅(8장), 서포트벡터 머신(9장)과 같이 더 복잡한 방법들을 이야기해봐요.

 

 

 

 

 

 

4.1 분류 개요 An Overview of Classification

 

 분류 문제는 어떻게 보면 회귀 문제보다 더 많이 존재한다고 할수 있을거 같아요. 예를들자면

 

1. 어떤 사람이 병증 때문에 응급실에 왔습니다. 3가지 의료 상태 중 하나를 줄 수 있겠는데, 예를 들면 (정상, 긴급, 사망) 같은 경우가 있다고 해요. 각자 사람의 증상/상황을 보고 어떻게 분류하여야 할까요?

 

2. 온라인 은행 서비스같은 경우 사용자의 주소, 이전 거래 기록, 그 이외의 정보로 현재 거래가 사기(위법)인지 아닌지 판단할수 있어야 해요.

 

3. 어떤 질병이 있는 혹은 없는 사람들의 DNA 시퀀스 데이터가 있다고 합시다. 그러면 생명공학자는 이 질병을 야기시키는/원인이 되는 DNA변종이 있는지 다시 말하면 이 사람이 병에 걸릴 위험이 있는지 없는지 판단할 수 있어야 해요.

 

 회귀 상황과 마찬가지로 분류 상황에서도 훈련 데이터/관측치 observations ($x_{1}$, $y_{1}$), . . .($x_{n}$, $y_{n}$)을 가지고 있고, 이 데이터를 사용해서 분류기를 만들수가 있어요. 그리고 우리가 만든 분류기가 훈련 데이터에만 잘 동작하는게 아니라 (훈련 과정에 사용하지 않은)테스트 관측치/테스트 데이터에서도 잘 동작되야하겠죠.

 

 

그림 4.1 채무 불이행 Default 데이터셋. 왼쪽 : 연간 수입과 매달 신용카드 대금 balance. 신용카드 채무 불이행 한 사람의 경우 주황색이며, 그렇지 않은 사람들은 파란색. 중앙 : 디폴트/채무불이행여부 여부에 따른 매달 카드 대금의 박스플롯, 우측 : 디폴트 여부에 따른 수입의 박스플롯

 이번 장에서는 시뮬레이션으로 만든  채무 불이행/디폴트에 관한 데이터셋을 사용하여 분류의 개념에 대해서 볼것이고, 사람들의 연간 수입과 매달 신용카드 대금 balance 등을 보고 신용카드 지출 채무 불이행 여부를 예측해봅시다. 이 데이터는 그림 4.1에서 볼수 있어요. 이 그림는 1만명의 연간 수입 income과 매달 신용카드 대금 일부를 그래프로 띄웠습니다. 

 

 그림 4.1의 왼쪽 판낼에서 채무 불이행한 사람들은 주황색, 그렇지 않은 사람은 파랑색으로 나타내고 있으며 (전반적인 체무 불이행 비율은 3%정도 됩니다.) 카드 대금이 클수록 채무 불이행이 큰것으로 나오고 있습니다. 그림 4.1의 오른쪽 판낼에서는 두 박스 플롯을 보여주고 있습니다. 첫번째 박스 플롯은 채무 불이행 여부에 따른 카드 대금 분포를, 두번째 그림에서는 채무 불이행에 따른 수입의 분포를 보여주고 있습니다.

 

 이번 장에서는 카드 대금 $X_{1}$과 수입 $X_{2}$로 채무 불이행 여부 Y를 예측하는 모델을 만드는 방법을 배워보도록 합시다. Y는 양적 변수가 아니므로 3장에서 본 단순 선형 회귀 모델은 사용할수가 없어요.

 

 그림 4.1에서는 입력 변수  카드 대금 balance과 반응 변수 채무 불이행 defualt이 중요한 관계를 가지고 있는걸 볼수 있겠습니다. 대부분의 현실 세계에서는 입력 변수와 반응 변수 사이에 이렇게 강한 관계를 가지고 있지는 않습니다. 하지만 이번 장에서 분류 과정을 쉽게 이야기하기위해서 입력과 반응 사이의 관계가 과장될 정도로 강한 예시를 사용해서 보겠습니다.

 

 

 

 

 

 

4.2 왜 선형 회귀가 아닐까요? Why Not Linear Regression?

 

 반응 변수가 질적 변수인 경우 선형회귀가 적절하지 않다고 했는데 왜그럴까요? 한번 응급실에 온 환자의 증상을 보고 상태가 어떤지 진단을 해본다고 합시다. 진단 결과 다음 3가지 경우가 있다고 해요. 뇌졸증 stroke, 약물 과다복용 drug overdose, 간질 발작 epileptic seizure. 이 값들을 아래와 같이 반응 변수 Y로 인코딩을 해봅시다.

 

 

 이렇게 인코딩을 하고, 최소 제곱법을 사용해서 입력 변수의 속성들 $X_{1}$, ..., $X_{p}$로 Y를 예측할 수 있도록 선형 회귀 모델을 학습해 봅시다. 하지만 이 인코딩 방식 처럼 뇌졸증 stroke와 간질 발작 epileptic seizure 사이에 약물 과다 복용 drug overdose를 넣어버리면 출력 값 사이에는 순서가 있는것이 되며,  (뇌졸증 - 약물 과다복용) == (약물 과다복용 - 간질 발작) 다시 말하면 뇌졸증과 약물과다복용의 차이와 약물 과다복용과 간질 발작의 차이가 같다고 할수 있겠죠. 하지만 진단 결과들 끼리는 순서가 존재하지도 않고  2- 1 == 3 - 2가되는 관계 같은건 존재하지도 않아요. 

 

 

 세가지 상태 끼리 완전히 다른 관계를 가지고 있다고 본다면 그러니까 순서를 가진게 아닌 카테고리로 본다면 옳은 인코딩 방식이라고 할 수 있을거에요.

 

 그리고 이 인코딩 각각으로 완전히 다른 선형 회귀 모델들을 만들어 테스트 입력이 주어질때 여러개의 예측값(stroke에 대한 예측, drug overdose에 대한 예측, epileptic seizure에 대한 예측)값들이 만들어 지겠죠.

 

 

 만약 반응 변수 값들이 순한 mild, 중간 moderate, 센 severe처럼 순서를 가지고 있다고 보는게 자연수러운 경우에는 1, 2, 3으로 인코딩시키는게 유용할 거에요. 하지만 경우의 수가 3개 이상인 정적 반응 변수를 자연스럽게 선형 회귀 모델에서 사용가능한 양적 변수로 바꿀 방법이 없어요.

 

 이진 양적 반응 binary qualtative response(반응 변수 값이 2개인 경우)의 경우는 간단한데, 예를들면 환자 상태가 뇌졸증 혹은 약물 과다복용 두가지 경우에 대한 확률만 있다고 할게요. 그러면 이걸 3.3.1장에서본 가변수를 사용해서 반응 변수를 아래와 같이 인코딩할수 있을거에요.

 

 이렇게 되면 이진 반응을 선형 회귀 모델로 학습시키고, $\hat{Y}$ > 0.5이면 약물 과다복용을 아니면 뇌졸증으로 예측할 수 있을거에요. 이진 분류 문제에서는 위 인코딩을 뒤집더라도 선형 회귀 모델은 같은 예측 결과를 나오니 어렵지는 않습니다.

 

 위와 같이 반응 변수가 0/1로 인코딩 된 경우 최소제곱을 이용한 회귀 모델에서 잘 동작하는데, 예를 들면 X$\hat{\beta}$를 Pr(약물 과다복용 | X)을 추정하도록 선형 회귀로 얻은 모델이라고 할수 있을거에요.

그림 4.2 채무 불이행 디폴트 여부 분류 데이터. 좌측 : 선형 회귀 모델로 추정한 디폴트 추정 확률. 추정 확률의 일부는 음수가 된다!. 주황색 구간은 디폴트 여부 (디폴트아님/맞음)를 0/1로 인코딩한 값을 보여주고 있어요. 우측 : 로지스틱 회귀를 사용한 디폴트 예측 확률로 모든 확률들이 0과 1사이에 있습니다. 

하지만 선형 회귀를 사용한다면 그림 4.2같이 [0, 1]사이 구간 밖을 나갈수 있어 확률로 다루기는 힘들어요. 하지만 선형 회귀 모델의 예측 결과는 순차적이다 보니 처리되지 않은 확률 추정치 crude probability estimates라고 할수 있겠죠.  아무튼 이진 반응 결과를 예측하기 위해서 선형회귀를 사용하는 분류 방법을 LDA Linear Discriminant analysis라고 하는데 4.4장에서 살펴봅시다.

 

 하지만 가변수 방법은 3개이상인 경우의 수로 확장해서 쓰기가 힘들어요. 이런 이유로 다음 장에서 나오는 방법이 이런 반응변수들을 다루는데 적합합니다.

 

=> 이 부분이 좀 햇갈리는데 아래와 같이 정리 할 수 있겠다.

경우의 수들을 1, 2, 3과 같이 인코딩 해버리면 결과 끼리 순서가 있는 것으로 만들어 버리는 문제가 있다.

* 라벨이 순서가 있는 경우는 괜찬으나 순서가 없는 경우는 문제가 된다.

가변수를 이용해여 0과 1로 인코딩 하는 경우 경우의 수가 2개일 때만 사용 가능하다.

 

 

 

 

 

 

 

4.3 로지스틱 회귀 Logistic Regression

 

 디폴트 데이터셋을 생각해보면 디폴트 유무를 두 카테고리 Yes, No로 만들수 있을거에요. 하지만 Y를 직접 구하도록 모델링하기 보다는 로지스틱 회귀에서는 해당 카테고리에 속할 확률을 구하도록 모델링 합니다.

 

  디폴트 데이터셋의 경우에는 로지스틱 회귀 모델은 디폴트될 확률을 구하겠죠. 예를들면 채무 잔액 밸런스 balance가 주어질때 디폴트가 될 확률은 아래와 같이 정리할수 있을거에요. 

 Pr(default = Yse | balance)의 값은 0, 1 사이가 될것이며 p(balance)로 축약할게요. 이 예측 값으로 디폴트 유무를 판단할수 있겠죠. 예를들어 어떤 사람이 p(balance) > 0.5이라면 이 사람은 default = Yes 라고 볼수 있겠습니다.  이걸 조금 더 수정하자면 회사가 디폴트 위험 여부를 보수적으로 판단한다면 하한 임계치를 0.1로 낮출수도 있을거에요.

 

 

 

 

4.3.1 로지스틱 모델

 

 어떻게 p(X) = Pr(Y = 1 | X)와 X 사이 관계를 모델링 할 수 있을까요?(편의를 위해서 반응을 0과 1만 쓰겠습니다.) 4.2장에서 선형 회귀 모델을 사용해서 확률을 구할수 있다고 얘길 했었습니다.

 우리가 카드 대금 balance로 default=Yes 인지 예측하기 위해서 이 방법을 사용한다면, 그림 4.2의 왼쪽 판낼 같은 모델이 만들어 질거에요. 이 그림을 보시면 이 방법의 문제가 나오는데 카드 대금이 0에 가까우면 디폴트일 확률 값이 -로 내려갑니다.. 카드 대금이 너무 크다면 1을 또 넘어갈거에요. 이런 예측 결과는 말도 안되고, 디폴트가 될 확률을 구해야하므로 카드 대금에 상관없이 0과 1사이에 속해야 합니다. 또, 이 문제는 신용 디폴트 데이터에서만 생기는게 아니구요.

 

 하지만 아무리 직선 모델로 0/1인 반응 변수로 학습을 하던간에 p(X) < 0 또는 p (X) > 1이 되는 경우가 생길수 밖에 없습니다. 이 문제를 피하기 위해서 모든 X가 0과 1사이 값을 가지도록 하는 함수를 사용해서 p(X)를 모델링 해야 합니다. 많은 함수들이 있지만 이번에는 로지스틱 회귀를 다루므로 로지스틱 함수를 사용하겠습니다.

* 로지스틱 함수 

https://ko.wikipedia.org/wiki/%EC%8B%9C%EA%B7%B8%EB%AA%A8%EC%9D%B4%EB%93%9C_%ED%95%A8%EC%88%98

 

 

 식 (4.2)의 로지스틱 회귀 모델을 학습하기 위해서는 다음장에서 설명할 최대 가능도법 maximum likelihood를 사용해야 합니다. 그림 4.2에서 로지스틱 회귀 모델을 디폴트 데이터에 학습 시킨 결과를 보여주고 있는데, 카드 대금이 적을수록 디폴트 확률이 0에 가까워지지만 0에는 안되고 있죠. 반대로 카드 대금이 클수록 1에 가까워지지 1이 되지는 않습니다.

 

 로지스틱 함수는 항상 이런 S형태의 곡선을 만들며 X의 값에 상관없이 우리가 얻고자하는 확률 예측값을 얻을수가 있어요. 그리고 왼쪽 그림에서 이 로지스틱 회귀 모델이 선형 회귀 모델보다 확률 범위들을 더 잘 적합하고 있는걸 볼수 있어요. 두 모델로 구한 평균 확률은 0.0333으로 같으며, 이 데이터셋의 채무 불이행, 디폴트 한 사람의 비율과도 같아요.

 식 (4.2)를 약간 변형하면 위와 같이 바꿀 수 있는데 이걸 오즈 odds라고 부르며 0 ~ 무한대 사이의 값을 가지고 있어요. 이 오즈가 0, 무한대에 가까울 수록 여기서 사용된 확률이 매우 낮거나 높다고 할수 있겠습니다. 예를 들어 평균적으로 5명중 1명이 디폴트가 된다고 하면 p(X) = 1/5 = 0.2가 되고, 0.2/(1-0.2) = 1/4, 오즈는 1/4가 됩니다. 10명 중 9명이 디폴트가 된다면 p(X) = 9/10이고 오즈는 0.9/(1 - 0.9) = 9가 될 거에요. 오즈는 확률이 작으면 작게, 크면 크게 하다보니 확률 대신에 자주 사용하고 있습니다. 

 

 

 위 (4.3) 양변에다가 로그를 취하면 다음의 식을 얻을수 있는데 왼쪽은 로그 오즈 log-odds 혹은 로짓 logit이라고 부르고 있어요. 결국 로지스틱 회귀 모델 (4.2)은 X에 대해 선형함수인 로짓을 가지고 있습니다.

 3장에서 선형 회귀 모델을 다룰때 $\beta_{1}$은 X가 한단위 증가할때 Y가 평균적으로 변화하는 양이라고 했었는데, 이 로지스틱 회귀 모델의 경우 X가 한단위 증가할때 (4.4) 로그 오즈를 $\beta_{1}$만큼 바꾸며 (4.3)의 오즈에 $e^{\beta_{1}}$을 곱한것과 같다고 할 수 있겠습니다. 하지만 (4.2)에서 X와 p(X)의 관계는 직선이 아니다 보니 X가 한 단위 증가해도 $\beta_{1}$만큼 p(X)를 바꾸지를 못합니다.

 

 p(X)가 변하는 크기는 현재 X의 값이 어떤지에 영향을 받습니다. 하지만 X가 어떤지간에 $\beta_{1}$이 양수인 경우 X가 증가하면 p(X)도 상승할 것이며, $\beta_{1}$이 음수인경우 X가 증가하더라도 p(X)는 감소할 것입니다. X와 p(X)사이 선형적인 관계가 존재하지 않으며, p(X)의 변화율은 현재 X의 값에 따라 정해지는 내용들은 그림 4.2의 오른쪽 판낼에서 확인할수 있겠습니다.

 

=> 정리

1. 회귀 모델로 확률을 예측 할 수 있다. (식 4.1)

2. 선형 모델로 확률을 예측하면 음수도 나오고 0과 1 밖을 나가버린다. (그림 4.2)

3. 선형 회귀 모델을 로지스틱 함수에 넣어 0과 1사이 확률 값만 나오게 만들었다 (식 4.2)

4. 선형 회귀 모델은 선형적으로 변하나, 로지스틱 회귀 모델은 현재 값에 따라 변함의 정도가 다르다.

- X가 한단위 증가할 떄  단순 선형 회귀 모델은 $\beta_{1}$만큼 Y가 바뀐다.

- 로지스틱 회귀 모델은 $\beta_{1}$만큼 로짓이 바뀐다. => 실제 p(X)는 X와 다르게 변한다.

 

 

 

 

 

 

 

 

4.3.2 회귀 계수 추정하기 Estimating the Regression Coefficients

 

 식 (4.2)의 회귀 계수 $\beta_{0}$, $\beta_{1}$은 모르지만 훈련 데이터셋으로 추정해야 합니다. 3장에서는 아직 모르는 선형 회귀 계수들을 추정하기 위해 최소제곱법을 사용했지만. 식 (4.4)같은 모델도 (비선형) 최소 제곱법을 사용할 수 있기는 하지만 일반적으로는 최대 가능도 법 maximum likelihood이 잘 사용되고 있습니다.

 

 로지스틱 회귀 모델을 학습하기 위해서 최대 가능도법을 사용하는 기본 개념은 (4.2)의 식을 사용해서 모든 사람의 예측 확률 $\hat{p}$($x_{i}$)이 실제 관측치에 가장 가깝도록 하는 계수 추정치들을 구하는 방법입니다. 다시 말하면 실제 디폴트인 사람들에 대한 확률이 1이 많이 나오도록 하는 $\widehat{\beta}_{0}$, $\widehat{\beta}_{1}$를 찾는거에요. 이 개념을 수식화 할수 있으며 이걸 가능도 함수 likelihood function이라고 부릅니다.

 

$\widehat{\beta}_{0}$, $\widehat{\beta}_{1}$는 이 우도 함수로 최대화 시키고자 할 계수들이구요. 최대 우도법은 이 책 전반에서 다룰 수많은 비선형 적인 방법들을 학습시키는데 널리 사용되고 있습니다. 선형 회귀에서는 최소 제곱법이 사용되었는데, 최대 가능도 법의 특수한 케이스라고 할수 있어요. 최대 가능도법에 대한 수학적으로 자세한 설명은 이책 범위 밖이지만 R 같은 통계적 소프트웨어 패키지에서 사용해서 쉽게 로지스틱 회귀나 다른 모델들을 학습시킬수가 있어요. 그러니 최대 가능도법을 이용한 학습과정의 자세한 사항들에 대해서 걱정할 필요는 없습니다.

 

표 4.1 디폴트 데이터, 카드 대금 데이터로 디폴트 확률을 예측하는 로지스틱 회귀 모델의 추정 계수. 대금이 한 단위 증가할때 디폴트 로그 오즈가 0.0055씩 증가한다.

 표 4.1에서는 카드 대금으로 디폴트=Yes일 확률을 예측하는 로지스틱 회귀 모델 학습 결과로 회귀 계수 추정치와 관련 정보들을 보여주고 있습니다 $\widehat{\beta}_{1}$ = 0.0055는 입력이 증가할때 디폴트 증가 확률과 관련이 되어있으며, 정확하게 얘기하자면 입력이 한 단위 증가할때 디폴트의 로그 오즈가 0.0055 만큼 증가합니다.

 

 표 4.12에서는 로지스팀 회귀 모델의 다른 결과 값들도 보여주고 있으며 3장의 결과물과 비슷합니다. 예를들어 표준 오차 를 계산하여 추정 계수의 정확도를 측정할수 있을 것이고, 표 4.1의 z통계량은 선형 회귀에서 t 통계량과 같은 역활을 하는데 페이지 68의 표 3.1에서 볼수 있습니다. $\beta_{1}$에대한 z통계량은 $\widehat{\beta}_{1}$/ SE($\widehat{\beta}_{1}$과 같으며, z통계량이 클 수록 귀무 가설 $H_{0}$ : $\beta_{1}$ = 0이다. 즉, 채무 확률은 카드 대금에 영향을 받지 않는다 상관없다 라는 귀무가설이 틀렸다고 할 수 있습니다. 카드 대금에 대한 유의확률 p value는 매우 작으므로 귀무 가설 $H_{0}$를 기각 할 수 있고, 다시말하면 카드 대금과 디폴트 확률 사이에는 유의미한 관계가 있다고 볼수있습니다. 표 4.1의 추정 절편은 중요치 않으므로 넘어가겠습니다.

 

 

 

=> 정리

- 로지스틱 회귀 모델의 회귀 계수는 최대 우도법으로 추정한다.

- 최대 우도법을 이용한 계수 추정은 다양한 통계 소프트웨어에서 제공하니 넘어감.

- X가 1씩 증가할때 채무 불이행 확률의 로그 오즈가 0.0055가 증가한다.

 

 

 

 

4.3.3 예측 하기 Making Predictions

 

 회귀 계수들을 추정하면 카드 대금에 따른 디폴트 확률은 쉽게 계산할 수 있습니다. 표 4.1의 계수 추정치를 이용해서 카드 대금에 대해 X가 $1,000일 때 디폴트 확률을 아래와 같이 구할 수 있는데 아직 확률은 1%보다 낮습니다.

 

 하지만 카드 대금이 $2,000인 경우에는 58.6%로 훨씬 커지게 되요.

 

 

3.3.1장에서 본 가변수 방법으로 로지스틱 회귀 모델을 예측할 수도 있겠는데, 예를 들면 학생 여부를 이용하여 디폴트를 판단한다고 해보겠습니다. 이 모델을 학습하기 위해선 학생인경우 1, 학생이 아닌 경우 0으로 두고 가변수를 만들어 모델을 학습하면 되요. 

 

표 4.2 디폴트 데이터셋. 학생 여부에 따른 디폴트 확률을 예측하는 로지스틱 회귀 모델의 추정 계수. 학생 상태가 가변수로 인코딩 되었으며 1의 경우 학생, 0의 경우 학생이 아닌것으로 되어 위 표에서 학생인 경우를 보여주고 있습니다.

 

 그러면 학생인 경우 채무 불이행할 확률에 대한 로지스틱 회귀 모델의 결과는 표 4.2에서 볼수 있겠습니다. 이 경우는 학생인 경우에 대한 계수들로 보여주고 있는데 p value가 통계적으로 유의미한 것을 볼수 있습니다. 이는 학생이 아닌 경우보다 학생일때 디폴트할 확률이 더 크다는걸 알려줘요.

 

 

300x250
728x90

 

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

8강 합성곱 신경망 아키텍처 5 - Others

 

 

 

Lec8_Convolution_Networks_Arcitecture5_Others.pdf
1.79MB

 

 

 

 

 

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

- 신경망 아키텍처의 복잡도 비교

- ResNext

- 모바일 신경망

- 신경망 아키텍처 탐색법

- 신경망 아키텍처 정리

 

 

 

 

1. 다양한 신경망 아키텍처들의 복잡도 비교

- 이번에는 그 동안 배웠던 다양한 신경망 아키텍처들의 복잡도를 그래프를 통해서 살펴볼 수 있었습니다. 각 모델들의 학습 파라미터의 수가 모델의 크기, x축을 모델의 연상량, y축을 모델의 에러율로 하는 그래프로 가장 먼저 보았던 AlexNet 부터 VGG, GoogLeNet, ResNet 등과 추가로 인셉션 모듈과 ResNet을 결합한 Inception-v4 모델 까지 보면서 더 가벼우면서도 더 좋은 성능을 보이는 흐름을 전체적으로 살펴볼수 있습니다.

 

 

 

2. ResNeXt

- 이전 시간에 봤던 ResNet을 계층 순서를 바꾸면서 성능을 약간 더 개선 시킬수 있었지만, 기존의 병목 블록을 병렬화 시켜 개선시킨 모델인 ResNeXt에 대해서 살펴봤습니다. ResNet에서 병목 블록은 기본 블록의 앞 뒤에 커널의 크기가 작은 합성곱 계층을 추가 시킴으로서 연산량을 줄이고 더 깊게 만든 블록이었습니다.

 

 하지만 ResNeXt에서는 이 병목 블록을 병목 블록과 동일한 연산량을 가지는 병렬 병목 블록들을 만들어 성능 개선을 할 수 있었습니다. 기존의 병목 블록을 병렬화 시키는 만큼 병목 통로 당 계산량은 줄었지만 전체적인 병렬 병목 블록의 계산은 동일하도록 채널 수를 조절한 덕분에 계산량이 늘어나지 않으면서 병렬 그룹을 많이 만들어 성능 향상에 기여시켰습니다.

 

 

3. MobileNet

- 지금까지 본 신경망들은 효율성을 고려해서 더 좋은 성능을 낼수 있도록 만든 아키텍쳐들이지만 저성능 디바이스나 모바일 환경에서 사용하기는 어려웠습니다. 그래서 정확도는 떨어지더라도 이런 한정된 자원의 임베디드 시스템에서도 가볍게 사용가능한 MobileNet과 ShuffleNet 같은 모델들이 나오게 되었습니다.

 

 MobileNet은 기존 합성곱 블록을 깊이단위 분리 합성곱으로 바꾸어 쌓은 모델로 깊이단위 합성곱층과 점단위 합성곱층을 분리하여 연산량을 크게 줄일수있었습니다. 점단위 합성곱 계층의 경우 커널 크기가 1 x 1로 하여 소수 연산을 줄일수 있었고, 깊이 단위 합성곱층에서는 그룹합성곱으로 나누어 기존 합성곱층보다 연산량 1/C배 만큼 줄일 수 있었습니다. 이런 덕분에 기존의 합성곱 블록보다 가장 작은 경우 1/9가 될만큼 가볍게 만들 수가 있었어요. 

 

 

 

4. 신경망 아키텍처 탐색

- 다음에 본 신경망 아키텍처는 신경망 아키텍처 탐색 모델로 신경망을 만드는 신경망 모델이라고 할수 있습니다. 이 모델은 컨트롤러라고 부르는 부모 신경망으로 자신 신경망을 생성하고 이 자식 신경망의 정확도를 비용으로 사용해 부모 신경망을 학습시키는 모델로 신경망을 만드는 신경망인 만큼 초기 모델은 한 단계 학습 시키는대만 800개의 GPU를 사용해서 28일이 걸릴 만큼 연산량이 많았으나 차후 연구를 통해 학습 속도를 빠르게 키울 수 있었습니다. 이 모델을 이용하여 자동적으로 탐색한 신경망 모델들은 기존의 방식으로 만든 신경망들보다 가볍고 뛰어난 성능을 보였습니다.

 

 

5. 신경망 아키텍처 정리

- 그 동안 배운 신경망 아키텍처에 대해서 정리를 하면 맨 초기 2012년 시행 착오를 통해 하이퍼 파라미터를 탐색하여 만든 AlexNet이 기존의 혼합 특징 기반 방법보다 우수한 성능을 보이면서 딥러닝이 크게 활성화 되기 시작하였습니다. 이후 더 시행착오를 거쳐 더 큰 모델, 더 좋은 성능을 보이는 ZFNet이 2013년도에 나왔습니다.

  2014년도에는 시행 착오를 통해 하이퍼파라미터를 찾던것과 달리 설계 규칙을 통해 신경망 모델을 만드는 VGG모델과 효율성과 성능 두가지 목표를 잡기 위해 집중적 다운샘플링, 인셉션 모듈, 전역적 풀링 등의 기법을 활용한 GoogLeNet이 나왔으며,

 배치 정규화가 나와 더 깊은 신경망을 만들 수 있었으나 제대로 학습이 되지 않는 문제를 개선하기 위해 스킵 커낵션을 활용한 ResNet이 나오면서 100층 넘어가는 신경망 모델이 나오기도 하였습니다. 이 외에 가벼운 환경에서 사용할수 있는 MobileNet과 ShuffleNet 등 많은 모델들이 나왔으며, 신경망을 만드는 신경망 아키텍처 NAS까지 기존의 사람이 만든 신경망보다 훨씬 뛰어난 성능의 모델을 찾을수가 있었습니다.

 

 

 

 

 

 

 

300x250
728x90

 

활성화 함수가 아닌것은?

  1. tan(x)
  2. max(0, x)
  3. tanh(x)
  4. max(0.1x, x)

정답 : 1번, 나머지 ReLU, tanh, Leaky ReLU는 활성화 함수비용 함수 loss function에 관해 틀린 설명은?

  1. 비용 함수는 현재 모델이 올바른지를 평가하기 위한 함수이다.
  2. 분류 문제의 비용함수로 multiclass svm loss, ross entropy loss가 있다.
  3. 회귀 문제의 비용함수로 MSE와 RMSE가 있다.
  4. 최적화 과정은 비용 함수를 최대화하기 위하여 수행한다.

정답 : 4번, 비용 함수를 최소화 시키는 방향으로 최적화를 수행한다.특징 변환 feature transform에 관한 틀린 설명은 것은?

  1. 신경 망에서는 특징 변환을 위해 활성화 함수가 사용된다.
  2. 특징 변환을 통해 기존에 선형 분리가 불가능한 데이터가 선형 분리가 가능해진다.
  3. ReLU 함수로 변환 후 선형 분리가 가능해진 데이터를 다시 역변환시켜도 선형 분리가 가능하다.
  4. 특징 변환은 기존 좌표계의 데이터를 다른 좌표계 상에서 나타내는것을 말한다.

정답 : 3번, ReLU 함수로 특징 변환 후 선형 분리가 가능해진 데이터는, 원래 공간으로 역 변환시 선형 분리가 불가능하다. 

 

 

 

 

 

 

 

 

 

Q)정규화 기법이 아닌것은?

  1. 배치 정규화 Batch Normalization
  2. 레이어 정규화 Layer Normalization
  3. 인스턴스 정규화 Group Normalization
  4. 활성 정규화 Activation Normalization

정답 : 4번, 정규화의 종류로 배치/레이어/인스턴스/그룹 정규화가 있다.Q)풀링 계층의 하이퍼 파라미터가 아닌것은?

  1. 커널 사이즈
  2. 스트라이드
  3. 패딩
  4. 풀링 함수

정답 :  3번. 풀링 계층은 패딩을 지정할 필요가 없다.Q) 역전파 과정에서 계산되는 그라디언트의 종류가 아닌것은?

  1. 다운 스트림 그라디언트
  2. 패러랠 그라디언트
  3. 로컬 그라디언트
  4. 업스트림 그라디언트

정답 : 2번. 역전파 과정에서 로컬 그라디언트와 업스트림 그라디언트를 곱해 다운스트림 그라디언트를 구한다.Q. 최적화 기법이 아닌것은?

  1. 확률적 경사 하강법
  2. Adaptive Gradient
  3. RMSProp
  4. RMSE

정답 : 4번. RMSE는 회귀 문제에서 사용되는 비용 함수, 척도이다.

 

 

 

 

 

 

 

 

 

 

 

Q ) Internal Covariate Shift에 관한 설명으로 틀린것은?

  1. 이 현상을 제거시킴으로서 그라디언트가 사라지는 문제를 개선하였고, 깊은 신경망을 만들 수 있게 되었다.
  2. 이전 파라미터의 변화로 인해 현재 입력의 분포가 바뀌는 현상을 말한다.
  3. 이 현상을 제거시키는 방법으로 드롭 아웃이 있다.
  4. 이 현상을 제거시키는 방법으로 배치 정규화와 화이트닝(백색잡음화. 평균 0, 분산 1)이 있다.

정답 : 3번, 드롭 아웃은 과적합을 제거시키기 위해 사용한다.
출처 : https://m.blog.naver.com/laonple/220808903260

 

 

 

Q ) 드롭 아웃에 관한 설명으로 틀린것은?

  1. 과적합 문제를 해결하기 위해 사용되었다.
  2. 학습 과정에 무작위로 신경망의 일부를 생략하면서 다양한 모델들을 투표한 것 같은 효과를 낸다.
  3. 각 뉴런들이 서로 동조화, 비슷해지는 현상을 막아 더 뚜렷한 특징들을 얻는다.
  4. 모든 데이터를 평균이 0, 분산이 1이 되도록 정규화 시킨다.

정답 : 4번, 화이트닝에 관한 설명이다.
출처 : https://m.blog.naver.com/laonple/220818841217

 

 

 

Q ) 활성화 함수에 관한 설명으로 틀린것은?

  1. sigmoid : 입력 값이 일정 이상 올라가면 기울기가 0에 가까워져 그라디언트 소멸 현상이 생긴다.
  2. tanh : sigmoid와는 다르게 그라디언트 소멸 현상이 생기지 않는다.
  3. ReLU : sigmoid나 tanh보다 구현이 매우 간단하고, 연산 비용도 가벼우며 학습 속도도 빠르나. 0보다 작은 경우 출력이 없어진다.
  4. Leakly ReLU : ReLU의 단점을 보완하기 위해 x < 0인 경우, 입력에 0.01를 곱하여 ReLU의 단점을 보완했다.

정답 : 2번 , tanh도 시그모이드와 마찬가지로 그라디언트 소멸 현상이 생긴다.
출처 : https://newly0513.tistory.com/20

 

 

Q) 신경망 아키텍처에 관한 설명으로 틀린것은?

  1. AlexNet과 ZFNet은 좋은 이미지 분류 성능을 내는 하이퍼 파라미터들을 시행착오를 통해 찾았다.
  2. VGG는 특정한 설계 규칙으로 만든 신경망이며 합성곱층의 커널크기를 직접 탐색하지 않고, 커널이 작은 합성곱 층을 쌓음으로서 더 좋은 성능을 내었다.
  3. GoogLeNet은 aggressive stem, inception module, average pooling으로 더 효율적인 모델을 만들었다.
  4. 신경망 아키텍처 설계에서 메모리 공간 크기, 학습 가능한 파라미터 개수, 소수점 연산횟수 FLOP은 중요한 척도가 아니다.

정답 : 4번, 신경망 아키텍처 설계에서 다음 요소들은 매우 중요한 척도이다.
출처 : 저스틴 존슨 교수님의 컴퓨터 비전 강의, 신경망 아키텍처

 

 

 

Q) 다양한 신경망 아키텍처에 관해 옳은 설명이 아닌것은?

  1. Network Architecture Search : 컨트롤러 신경망이 자식 신경망을 만들어내. 가장 좋은 성능의 자식 신경망을 찾는다.
  2. mobileNet, ShuffleNet : 저성능 환경에서도 사용가능하다.
  3. 신경망 아키텍처를 설계할 때 베이스라인 모델을 사용하지 않고, 처음부터 설계해 나가는것이 좋다.
  4. ResNeXt : Residual Block을 여러 그룹으로 병렬화를 하여 더 좋은 성능을 내었다.

정답 : 3번, 신경망 아키텍처 설계시 목적에 맞는 베이스라인 모델을 선정하여 개선해 나가는게 좋다.
출처 : 저스틴 존슨 교수님의 컴퓨터 비전 강의, 신경망 아키텍처

 

300x250
728x90

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

8강 합성곱 신경망 아키텍처 4 - ResNet

 

 

 

 

 

 

Lec8_Convolution_Networks_Arcitecture4_ResNet.pdf
1.40MB

 

 

 

 

이번 자료에서 중요한 내용으로 아래의 다섯가지를 정리해보자

- Residual Network 배경
- Residual Block
- Residual Network
- Bottleneck Residual Block
- Residual Network 성과와 개선법

 

 

 

 

Residual Network의 배경

- Residual Network를 잔류 신경망이라고 써서 정리하겠습니다. 지금까지 신경망에 대해 학습하면서 배치 정규화 기법 덕분에 그라디언트 소멸 문제를 해결해 심층 신경망을 쌓을수 있게 된다고 했었습니다. 하지만 20층 짜리 신경망과 이를 복사해서 더 깊은 신경망을 만든 경우를 비교해보면 얕은 모델보다 깊은 모델이 테스트 에러율이 크다보니 오버피팅이 된다고 생각 할수 있지만, 훈련셋에 대한 에러율을 보면 오버피팅인 경우 깊은 모델의 에러율이 낮아져야 하지만 여전히 얕은모델보다 큰 경향이 나와 실제로는 오버피팅이 아니라 언더피팅이 발생하게 됩니다.

 

 한 모델을 복사해 깊은 모델을 만들었으면 동일한 성능이 나와야할것 같으나 그렇지 않은건 최적화의 문제입니다. 깊은 모델에서 얕은 모델의 층까지는 동일하게 학습되더라도 이후 계층들이 항등 함수라면 얕은 모델과 동일한 결과를 얻을수 있겠지만, 기존의 구조로는 깊은 신경망의 뒷편에도 얕은 신경망과 똑같은 계층들이 존재하기 때문에 항등 함수가 되도록 학습시킬수가 없습니다.

 

 

Residual Block

- 기존의 합성곱 블록이 합성곱 계층과 활성화 함수를 거쳐가는 식이었다면, 하나의 블록이 항등 함수, 항등 블록이 될수 있도록 입력을 그대로 출력으로 연결하는 지름길을 추가한 모델이 Residual Block 잔류 블록입니다. 기존 블록에다가 입력 x를 그대로 전달하는 통로 덕분에 학습 과정에서 이 잔류 블록은 합성곱 계층의 가중치들이 0이 되면, 합성곱 통로의 결과는 0이 되고 입력이 그대로 전달되는 통로만 남으므로 항등 함수가 되도록 학습이 가능해 졌습니다.

 

- 잔류 블록이 항등 함수로 학습이 가능해졌으며, 잔류 블록이 가진 추가적인 통로 덕분에 기존의 역전파 과정에서 relu를 지나 사라지는 경우가 생기더라도 이 통로를 통해서 그라디언트가 더 잘 전파되어 훨씬 심층적인 신경망을 구현하는게 가능해졌습니다.

 

 

 

Residual Network

- 잔류 신경망은 이전에 본 신경망 아키텍처인 VGG와 GoogleNet의 기법들을 활용하고 있습니다. VGG에서 설계 원칙을 가지고 신경망을 디자인한것 처럼 커널 크기가 작은 잔류 블록을 여러개 쌓았으며, 각 단계별 거칠때마다 채널의 크기가 두배가 되도록 하고 있으며

 

 GoogLeNet에서 사용했던 Aggressive Stem 집중적 다운샘플링이라 하겠습니다. 이 기법을 통해 초기에 처리할 공간적 차원의 크기를 크게 줄였고, 신경망 맨 끝 완전 연결 계층으로 출력을 만들기 직전 전역적 평균 풀링을 사용해 여러 완전 연결 계층을 사용할 필요없이 연상량을 늘리지 않고 빠르게 출력할수 있도록 설계 되었습니다.

 

 

 

 

 

Bottleneck Residual Block

- Bottleneck Residual Block을 병목 잔류 블록이라 부른다면, 우선 기존의 잔류 블록이 커널 크기가 3 x 3인 합성곱 계층을 두개 쌓아서 연산을 시키기고 있었습니다. 여기서 연산량을 더 줄이고 더 많은 레이어를 사용할수 있도록 커널 1 x 1 계층을 앞뒤로 두고 그 사이에 3 x 3 합성곱 계층을 두는 식으로 만든게 병목 잔류 블록입니다. 3 x 3 합성곱 계층 앞 뒤로 1 x 1 계층을 둔 덕분에 채널 수도 조정할수 있으며 더 깊고 가볍게 합성곱 연산이 가능해지게 되었습니다.

 

 ResNet-34는 기본 잔류 블록을 사용하여 ImageNet Top-5 Error가 8.58로 나왔으나, 이 모델을 병목 잔류 블록으로 변경하여 ResNet-50을 만들었으며 7.13으로 에러가 줄어들게 되었습니다. 이후에도 병목 잔류 블록을 추가한 방식으로 100층 이상의 신경망 아키텍처 ResNet-152 등이 나올 수 있었습니다.

 

 

 

 

Residual Network 성과와 개선법

- 잔류 신경망 모델이 나오기 전에 수 많은 이미지 관련 대회들이 있었고, 각 대회마다 서로 다른 팀들이 우승하고 있었습니다. 하지만 2015년 잔류 신경망 모델이 나오면서 이미지넷의 분류 대회 뿐만이 아니라 검출, 위치 추정 대회에서 우승했으며 이외에도 마이크로소프트의 COCO  데이터셋을 활용한 각종 대회들에서 우승하며 타 모델들 보다 훨씬 뛰어난 성능을 보였습니다.

 

- 이 잔류 신경망 모델을 개선하기 위한 방법으로 블록을 구성하는 계층들의 순서를 바꾸는 연구도 있었는데, 배치 정규화가 맨 앞, ReLU가 그다음, 그리고 Conv가 올때 약간의 성능 개선이 있엇습니다. 기존의 모델의 경우 마지막에 ReLU를 거치다보니 출력이 항상 양수가 되어 항등 함수 역활을 완전히 하기는 어려웠으나, 배치 정규화와 ReLU가 앞으로 간 덕분에 이 블록이 활성 함수의 역활를 할수 있도록 더 잘 학습된것 것 같습니다.

 

 

300x250
728x90

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

8강 합성곱 신경망 아키텍처 3 - GoogLeNet

 

 

 

 

Lec8_Convolution_Networks_Arcitecture3_GoogLeNet.pdf
0.91MB

 

 

 

 

 

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

- GoogLeNet 개요

- 집중적 다운 샘플링 줄기

- 인샙션 모듈

- 전역적 평균 풀링

- 부속 분류기

 

 

1) GoogLeNet 개요

- 2014년 이미지넷 분류 대회에서 구글이 VGG 모델을 이기고 대회를 우승하였습니다. 이 구글이 만든 모델 이름은 GoogLeNet으로 초창기 합성곱 신경망을 만든 LeNet을 딴 이름으로 이전에 본 다른모델과 차이점은 효율성을 목표로 한 모델이었습니다. AlexNet부터 ZFNet, VGG까지 점점 더 큰 신경망을 만들면서 더 좋은 성능을 얻을수 있었지만 계산 비용이 너무 큰 문제점이 있었습니다. 그래서 구글에선 복잡도를 줄여 휴대폰에서 돌릴수 있는 신경망 모델을 만들기 위해 고안되었습니다.

 

 

2) 집중적 다운샘플링 줄기

- GoogLeNet에서 사용된 대표적인 기법으로 집중적 다운샘플링 줄기가 있는데, 이전에 VGG나 AlexNet에서는 큰 이미지를 가지고 컨볼루션을 하다보니 계산량이 매우 큰 문제가 있다보니 입력 데이터를 맨 처음 특징 지도를 빠르게 줄이도록 하이퍼 파라미터를 조정시킨 줄기 신경망을 거침으로서 빨리 줄일 수 있었습니다. 입력의 크기가 224에서 28까지 줄을떄까지 메모리 사용량과 학습 가능 파라미터 개수, 소수점 연산량을 VGG-16과 비교해보면 구글넷이 5배 이상 가벼운걸 확인할 수 있었습니다.

 

 

 

3) 인샙션 모듈

- 다음 GoogLeNet의 대표적인 기법으로 인셉션 모듈이 있는데, 이전에 VGG는 단순히 커널 크기를 조정하는것 없이 3x3 합성곱-합성곱-풀링을 쌓아서 만들었다면, 인샙션 모듈은 4개의 평행한 가지를 만들어 다양한 커널 사이즈의 연산을 쌓아서 하이퍼 파라미터 커널 크기를 조정할 필요없는 장점이 있습니다. 이 뿐만이 아니라 큰 합성곱 연산을 하기전에 1 x 1 합성곱 연산 그러니까 병목 계층을 사용하여 미리 차원 수를 줄여 연산량을 크게 줄여내었습니다. 

 

 

 

4) 전역적 평균 풀링

- 다른 구글넷의 기법으로 전역적 평균 풀링이 있씁니다. 이전까지 본 신경망들은 마지막 출력 값들을 구하기 위해 펼침연산을 수행 후 완전 연결 계층을 여러번 연산을 하는데, 이렇게 하면 학습해야하는 파라미터 수가 매우 증가하는 문제가 있었습니다. GoogLeNet의 맨 끝에서 출력 텐서의 채널이 1024이고, 특징 지도의 크기가 7이다보니 입력과 동일한 크기를 커널 사이즈를 잡고 평균 풀링을 함으로서 펼침 연산 없이 1024 크기의 벡터를 구할수 있는 장점이 있었습니다.

 

 

5) 부속 분류기들

- 하지만 GoogLeNet은 더 깊은 신경망을 만들 수 있도록 도와주는 배치 정규화 기법이 나오기 전에 만들어진 모델이다 보니 신경망을 깊게 만들 수록 그라디언트가 사라지는 문제가 있었습니다. 이 문제를 해결하기 위해 신경망 모델 중간 지점에서 부속 분류기를 부착하여 신경망 모델 중간에서 예측 결과를 출력 하도록 만들었는데, 이렇게 한 덕분에 아주 멀리 있는 비용 그라디언트가 역전파 과정에서 사라지더라도 부속 분류기로부터도 비용 그라디언트를 받아 신경망을 전체적으로 학습시킬수 있는 기법이었습니다.

 

 

300x250
728x90

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

ZFNet과 VGG-16

 

 

 

 

 

 

 

 

Lec8_Convolution_Networks_Arcitecture2_ZFNet_VGG16.pdf
0.84MB

 

 

 

 

 

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

- ZFNet

- 2013, 2014년 이미지넷 분류대회
- VGG 신경망 설계 규정
- VGG 신경망 설계 규정 2

- AlexNet과 VGG-16비교

 

 

 

1) ZFNet

- 이전에 본 AlexNet의 하이퍼 파라미터들은 수많은 시행착오를 거쳐 만들었는데, 2013년도 이미지넷 분류 대회에서 우승한 ZFNet은 알렉스넷과 기본적인 구조는 같으며 다만 하이퍼 파라미터를 더 많이 조정하여 만들어진 신경망입니다. 기존의 AlexNet의 첫번째 합성곱 계층의 커널 크기와 스트라이드를 줄여 다운샘플링을 더 자주 시키고, 3~5번째 합성곱 계층의 필터 개수를 전보다 크게 늘림으로서 성능 개선을 할수 있었다고 합니다. 하이퍼 파라미터들을 이렇게 조정 시킨 덕분에 필요한 메모리 공간과 학습 파라미터 개수, 소수점연산 횟수도 크게 증가하였구요. 그래서 AlexNet을 확대시킨 신경망이라고 할수 있을거같아요.

 

 

 

2) 2013, 2014년 이미지넷 분류대회

- 2013년 기존의 AlexNet보다 크기를 키운 ZFNet이 2012년 알렉스넷이 16.4 오류율에서 11.7로 크게 줄였습니다. 하지만 두 방법은 시행착오를 여러번 겪어 만든 신경망이라 여전히 신경망을 설계하기는 어려웠습니다. 그러다가 2014년 최초로 신경망 설계 규칙/원칙을 정하여 만든 모델인 VGG가 나왔는데, 이 규칙을 따라 신경망을 더 깊이 만들수 있게 되면서 VGG-19가 7.3의 오류율로 2014년 이미지넷 분류 대회를 우승하였습니다.

 



3) VGG 신경망 설계 규정

- VGG 모델은 3가지 신경망 설계 규칙을 가진 모델로 첫 번째는 모든 합성곱 계층은 3 x 3 필터에 스트라이드 1, 패딩이 1이며, 두번째 규칙은 모든 최대 풀링 계층은 2 x 2 필터에 스트라이드 2, 세번째 규칙은 풀링 이후에 채널의 개수를 두배로 늘리는 것으로 정해져 있었습니다. VGG-16은 AlexNet이 5개의 합성곱 계층을 가졌던것 처럼 5개의 단계를 가지고 있으며, 뒤의 4,5번째 계층에는 합성곱 계층이 추가가 되긴한데 각 단계별로 2개의 합성곱 계층과 1개의 풀링 계층으로 이루어져 있습니다. 

 

 우선 첫번째 설계 규칙 모든 합성곱 계층은 3 x 3 필터, 스트라이드 1, 패딩 1 덕분에 이 계층 2개를 쌓은게 기존의 5 x 5 크기의 합성곱 계층과 비교해보면 수용장의 범위는 작지만, 학습할 파라미터의 수와 소수점 연산 횟수가 크게 줄일수 있는 장점이 있었습니다.

 

 

 


4) VGG 신경망 설계 규정 2

- 다음으로 두번째 설계 규칙은 모든 최대 풀링은 2 x 2 필터, 스트라이드는 2 그리고 세번째 설계규칙은 풀링 후에 채널을 2배로 한다가 있었는데, 이 두 규칙 덕분에 풀링 전의 연산량과 풀링 이후 다음 단계에서도 연산량이 동일하게 유지시킬수가 있는걸 볼수 있었습니다. 그래서 채널 수가 급격히 증가하더라도 소수점 연산량이 커지지 않고 이전과 똑같이 효율적으로 계산할 수 있습니다.

 

 

5) AlexNet과 VGG-16비교

- 마지막으로 AlexNet과 VGG-16을 비교해보면, AlexNet은 5개의 합성곱 계층과 3개의 완전 연결 계층을 가지고 있고, VGG-16의 경우 5개의 완전 연결 단계와 3개의 완전 연결 계층을 가지고 있습니다. 이 두 모델을 각 계층/단계 별 메모리 사용량, 학습 가능한 파라미터, 소수점 연산 횟수를 그래프로 보았을때, AlexNet보다 전체적으로 훨씬 커진 신경망 모델인걸 알 수 있었습니다.

 

300x250
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

+ Recent posts