🤖 Deep Learning

Deep Learning - [ Deep Learning 개요 ]

date
Jul 16, 2023
slug
deep-learning-01
author
status
Public
tags
Deep Learning
summary
Universal Approximation Theorem(UAT), 활성화 함수와 비선형성, 은닉층의 너비와 깊이
type
Post
thumbnail
category
🤖 Deep Learning
updatedAt
Aug 19, 2023 03:41 PM

딥러닝 개요

notion image
각각의 뉴런들은 라는 선형 회귀 식으로 이루어져 있기 때문에 딥러닝에서 선형 회귀를 이해하는 것은 매우 중요하다.
선형 결합들을 하나의 식으로 나타내면 다음과 같다.
 
 
위의 식을 한 번에 계산하기 위해 행렬 곱의 형태로 바꾸면 다음과 같다.
 
 
그렇다면 선형 회귀만으로 모든 회귀 문제를 해결할 수 있을까?
 

Universal Approximation Theorem (UAT)

George Cybenko 의 논문 "Approximation by Superpositions of a Sigmoidal Function” 에 의하면,
“한 개의 은닉층만 있어도 충분히 복잡한 함수를 근사할 수 있다”라는 내용이 제시되어 있다.
예를 들어 함수를 근사해 보자.
notion image
notion image
notion image
notion image
notion image
notion image
이처럼 뉴런 수가 많아지면 충분히 복잡한 함수도 근사할 수 있게 되는 것이다.
 

활성화 함수

그렇다면 선형 회귀를 이용하여 분류 문제도 해결할 수 있을까?
class 가 0, 1인 이진 분류 문제를 보자.
notion image
선형 회귀로는 제대로 된 예측을 할 수 없다.
예를 들어 100만이라는 입력 값이 주어지면, 0, 1이 아닌 100만 / 7 이라는 예측 값을 뱉어낸다.
그러므로 결과 값을 0부터 1사이로 제한해야 분류 문제를 해결하기에 효과적일 것이다.
이때 사용하는 것이 활상화 함수이다.
대표적인 활성화 함수로는 Sigmoid 함수가 있다.
notion image
 
최종 예측 값을 뽑기 전에 Sigmoid 와 같은 활성화 함수 거치면, 예측 값은 0부터 1사이의 확률 값으로 변환된다.
즉, 입력 값에 대해서 class 가 1이 될 확률이 얼마나 되는 지를 반환하는 것이다.
이 모든 과정을 그림으로 표현하면 다음과 같다.
notion image
이렇게 활성화 함수를 거치게 되면 결과는 항상 0, 1사이의 예측 값을 갖게 되고, 임계값을 기준으로 임계값 이하 → 0, 임계값 이상 → 1로 분류를 할 수 있게 된다.
다만 이렇게 활성화 함수를 사용하게 되면 non-convex 하게 되어 비용 함수로 최소 제곱 법(MSE: Mean Squared Error)을 사용할 수 없게 된다.
그렇다면 어떤 비용 함수를 사용해야 할까?

Cross-Entropy

최소 제곱 법을 사용할 수 없는 이유를 그림으로 살펴보자.
선형 회귀를 배울 때 사용한 비용 함수인 최소 제곱 법은 아래 그림처럼 convex 할 때 사용했다.
notion image
그런데 sigmoid 를 거치게 되면 다음과 같이 변하게 된다.
notion image
만약 이때 최소 제곱 법을 그대로 사용하게 되면, 임의의 초기 값에 따라 global minimum(빨간색 점) 이 아닌 local minimum(검은색 점) 을 찾게 될 수도 있다.
이러한 문제를 해결하기 위해 cross-entropy 라는 새로운 비용 함수를 사용한다.
 
cross-entropy 의 식은 다음과 같다.
 
 
이를 그래프로 나타내면 다음과 같다.
notion image
여기서 함수는 라는 확률 값을 입력으로 받고 있다. 즉, 0, 1사이의 값만 입력으로 갖는 것이다.
따라서 그래프에서도 0, 1사이의 값만 보면 된다.
notion image
잠시 비용 함수가 무엇인지 다시 짚고 넘어가자.
비용 함수는 실제 값과 예측 값의 차이를 나타내는 함수이다.
예를 들어 class 1을 예측한다고 했을 때, 가 class 1일 확률 값이다.
그러므로 의 값이 1에 가까울 수록 예측을 잘한 것이고, 실제 값과 예측 값의 차이가 적다는 것을 의미한다.
반대로 의 값이 0에 가까울 수록 예측을 못한 것이고, 실제 값과 예측 값의 차이가 많다는 것을 의미한다.
즉, 비용 함수는 의 값이 0에 가까울 수록 큰 값, 1에 가까울 수록 작은 값을 가져야 한다.
이제 위의 그래프를 확인해 보면 cross-entropy 를 왜 비용 함수로 사용하는지 이해할 수 있다.
 

비선형성

앞서 활성화 함수를 통해 분류 문제를 해결할 수 있었다.
이제 활성화 함수가 하는 역할이 정확히 무엇인지 알아보자.
활성화 함수의 역할은 비선형성을 추가해 주는 것이다.
 
먼저 선형 변환에 대해서 알아보자.
선형 변환이란 공간 비틀기와 같다.
그림에서 알 수 있듯이, 선형 변환을 하면 축도 따라서 같이 변형된다.
이렇게 되면 문제가 발생하는데 이것이 바로 그 유명한 XOR 문제이다.
 
아래 그림에서 직선 하나만 그어서 같은 class 끼리 묶이도록 분류할 수 있을까?
notion image
불가능하다.
하지만 다음과 같이 비선형 변환하면 분류할 수 있게 된다.
notion image
이처럼 비선형 변환이란 축 자체를 변형 시키는 변환이다.
이를 통해 복잡한 패턴과 관계를 학습할 수 있게 된다.
다음의 예시를 보자.
(사진 출처: 차원 축소)
(사진 출처: 차원 축소)
단순히 선형 mapping 하면 2D - Projection 그림과 같게 된다.
분명 검은색과 빨간색의 거리보다 검은색과 노란색의 거리가 더 멀어야 하는데, 검은색과 노란색 그리고 빨간색이 모두 공존하는 구간이 존재하게 되어 버린다.
하지만 비선형 mapping 을 하게 되면 2D - unrolling 그림과 같이 그래프를 표현할 수 있게 된다.
즉, 비선형성을 추가하게 되면 복잡한 형태의 데이터를 본 모습 그대로 바라볼 수 있게 된다.
바로 이것이 비선형 변환(활성화 함수)이 하는 역할이다.
 
그렇다면 은닉층이 하는 역할은 무엇일까?
 

은닉층의 너비와 깊이

마지막으로 은닉층의 너비와 깊이에 대해서 알아보자.
은닉층의 너비란 은닉층의 뉴런 개수를 의미하고, 깊이란 은닉층의 개수를 의미한다.
notion image
먼저, 데이터를 입력 받았을 때 은닉층의 너비를 늘렸다가(고차원으로 갔다가) 줄이는(저차원으로 보내는) 이유에 대해 알아보자.
데이터를 입력 받았을 때, 고차원으로 보내는 이유는 무엇일까?
다음 그림을 보면 쉽게 이해할 수 있다.
notion image
즉, 고차원에서 데이터를 특징 별로 분리하기가 더 쉽기 때문이다.
 
그렇다면 은닉층의 깊이를 깊게 쌓는 이유는 무엇일까?
notion image
은닉층이 단층으로 넓게 이루어져 있다면 해당 층에서의 파라미터()의 수가 너무 많아져 연산량도 많아질 뿐만 아니라, UAT 에 의해 오버 피팅의 문제가 발생한다.
오버 피팅에 대해 직관적인 설명은 다음과 같다.
오버 피팅
 
(사진 출처: 오버 피팅)
(사진 출처: 오버 피팅)
일반화
(사진 출처: 일반화)
(사진 출처: 일반화)
이렇듯 은닉층의 너비만 넓다면 입력 데이터에 과도하게 피팅되어 있어서 오히려 새로운 데이터가 들어 왔을 때 제대로 예측하지 못하게 되는 경우가 발생한다.
그런데 너비를 줄이고 은닉층을 깊게 쌓으면 표현 능력은 그대로 유지하면서 오버 피팅을 방지하여 일반화 성능을 높일 수 있다.
뿐만 아니라 파라미터 수가 적어졌기 때문에 연산량도 줄일 수 있다.
 
고차원에서 데이터의 특징 별로 분리한다. 활성화 함수를 통해 비선형성을 추가한다. 일반화 성능을 높이기 위해 은닉층의 너비와 깊이를 조절한다.
 
(출처: 새싹교육 나동빈 멘토님 강의내용)