욱이의 냉철한 공부

[딥러닝 기본] Deep Learning 기본개념 본문

데이터과학/개념 : Deep Learning

[딥러닝 기본] Deep Learning 기본개념

냉철한 욱 2020. 4. 17. 00:38

* 출저

본 개념정리는 제 담당교수님이신 연세대학교 정보대학원 김하영 교수님 수업과 Andrew 교수님의 Coursera 수업을 통해 얻은 정보를 통해 정리했습니다. 자료는 Andrew 교수님의 Coursera 수업자료입니다.

 


* 목차

1. 인공지능, 기계학습(머신러닝), 딥러닝

2. 기계학습(머신러닝)의 종류

3. 기계학습(머신러닝)의 개요

4. 딥러닝의 개요

3. 딥러닝의 hidden layer의 효과

 


1. 인공지능, 머신러닝, 딥러닝

- 인공지능 (Artificial Intelligence)

1) 사람처럼 의사결정할 수 있는 지능이 있는 것

2) 기계에 지능이 있는 것처럼 만들어 주는 것

- 기계학습 (Machine Learning)

1) 일종의 소프트웨어

개발자 및 전문가가 일일이 정하지 않고, 소프트웨어가 알아서 학습하여 무엇인가를 배우는 것.

2) 알고리즘

기계도 사람처럼 학습할 수 있는 무엇인가 있어야 한다. 그것이 알고리즘 

- 딥러닝 (Deep Learning)

머신러닝 중 하나이며, 학습방법에 따라 딥러닝으로 분류하는 것.

깊게 다수의 층으로 형성된 계산 층으로 인해, 비선형적인 복잡한 계산으로 학습하는 것.

Shallow layer에서, hidden layer를 추가했더니 성능이 더 좋아졌다. 

하지만 이것은 데이터가 적으면 효과적이지 않다.

즉 데이터가 많은데 의미없는 데이터만 있다면, 소용이 없다.

 

 

2. 기계학습(머신러닝)의 종류

- 지도학습 (Supervised Learning)

정해져 있는 데이터를 가지고 학습을 하는 것

Label이 있는 데이터를 가지고 학습을 하는 것

 

* 지도학습의 단점

항상 정답(Label)을 만들어줘야 한다. 하지만 이것은 어려운 부분이 많다. 

시간과 비용 많이 소요된다. 

ex) 암

보통 10000번 중 5번이 암에 걸린 사례라고 생각해보자. 

그리고 이 같은 암을 진단할 수 있는 전문가(의사)들이 필요하다. 

이것은 시간이 많이 소요될 뿐만 아니라, 의사라는 고인력에 대한 비용도 많이 들어간다. 

* 지도학습 분류 (결과에 따라 분류)

1) 회귀 regression : 범위의 연속성

2) 분류 binary classification : 둘 중의 하나를 고르는 것

3) 분류 multi-label-classification : 여러 개 중에 하나를 고르는 것

 

 

 

- 비지도학습 (Unsupervised Learning)

1) 일일이 레이블을 줄 수 없는 데이터가 있다.

     비지도 학습은 Y값이 없고 알아서 분류를 해준다.

     지도학습, 비지도학습 가장 큰 차이는 레이블(Y)

 

2) 특징값을 가지고 복원 가능하도록 학습된다.

    입력을 다시 복원하는 것이다. 

    특별히 누가 가르쳐주지 않아도, 어떤 것을 처음 봤을 때 특징을 보고 기억한다.

    ex) 처음보는 콜라, 다음 번에 봤을 때 봤었던거라고 기억하는 것이다. 

    

3) 로우 데이터는 대부분 고차원이다. (차원의저주)

     복원이 잘되도록 특징(Feature)를 추출한다. 

   

- 강화학습 (Reinforcement Learning)

정답이 없는 문제를 해결하기 위해 강화학습 등장

우리가 가지고 있는 문제에는 정답이 없는 문제들이 많다. 

 

ex) 누적된 게임점수가 최고가 되도록 학습하는 것

ex) 교수가 되는 방법 여러가지지만 한 가지만 정답이 있는 것 아니다.

 

- 준지도학습 (Semi-supervised Learning)

Unlabeded 데이터는 많고, labeled 데이터는 적을 때 준지도 학습을 사용

대표적으로 One-shot Learning 존재

One-shot Learning은 새로운 데이터 즉 Unlabeled 데이터를 보고, 새로 생긴 Class라는 것을 인지하고 학습에 반영한다. 

보통 머신러닝은 아웃라이어라고 처리했던 것을 새로운 Class로 인지하고 학습에 반영한다. 

ex) 기린 분류기

어린이는 한 장의 기린사진을 통해 기린이라는 class의 concept을 학습한다. 

한 편 딥러닝은 한 class를 학습하기 위해 수백장 또는 수천장의 데이터가 필요하다.

 

 

 

 

 

 

3. 기계학습(Machine Learning) 개요

 

 

​1. 왜 Older learning algorithms(tranditional Machine Learning)가 더 좋은가?

 

2. 왜 Deep learning이 더 좋은가?

 

 

 

 

- 개념

기계학습은 feature 추출에 많은 시간을 할애한다. 많은 전문자료를 확인하고, 전문가 의견이 필요하기 때문이다.

쉽게 말해 Domain Knowledge이 필요했다.

즉 이 feature 들은 이미 밝혀진 사실(원칙, 원리 등)들에 기반하여 직접 추출되어진다.

밝혀진 사실(원칙, 원리 등)을 기반으로 사람이 feature를 계산 및 추출하여 알고리즘에 넣는다.

- 장점  < 1) 왜 old한 머신러닝이 성능이 더 좋은가? >

데이터 양과 상관없이 어느정도 정확도가 높다.

어느정도 밝혀진 사실(원칙, 원리 등)을 기반으로 하기 때문에 정확도가 보장되는 것.

밝혀진 사실(원칙, 원리 등)(Domain Knowledge)로 데이터양이 적어도 어느정도 학습이 가능.

- 단점

데이터 양이 많아져도 성능향상은 크게 없다

즉 학습속에서 어떤 사실(원칙, 원리 등) 밝혀내는 것은 한계가 있다.

ex) 암 검출 알고리즘

Feature(특징) 전문가 의견 많이 반영하여 추출한다.

암이 뾰족뾰족하고, 울퉁불퉁하고 이런 Feature(특징)들을 찾아야 한다. 

이러한 Feature(특징)을 찾는데 대부분 시간을 할애하게 된다. 

 

4. 딥러닝(Deep Learning) 개요

- 개념

자동화 : feature 추출은 스스로 학습하며 진행된다.

이 feature들은 아직 밝혀지지 않은 사실들을 기반으로 학습되어질 가능성이 크다.

아직 사실(원리, 원칙, feature)을 밝혀내지 못했지만, 딥러닝이 자동으로 특징들 조합해가며 밝혀내지 않은 사실들을 학습에 반영한다.

=> 밝혀지지 않은 사실들이 아직 많다는 것

- 장점  < 2) 왜 딥러닝이 더 성능이 더 좋은가? >

성능이 좋다. 

데이터를 기반으로 밝혀내지 않은 사실 즉 feature를 추출하는 것이기 때문에, 데이터 양이 많아야 효과를 얻는다.

즉 데이터가 많아질 수록 더 좋은 feature를 추출할 가능성이 커진다. 그러면 성능 매우 좋아진다.

(데이터 양이 너무 많아져서 실제 데이터 분포와 거의 일치하게 된다면 성능 Saturated)

=>

1. 성능이 좋다.

2. 자동화 : Feature 들이 자동으로 학습되어 진다.

3. 일반화 : 모델을 다른 유형의 Task와 Data에 적용 가능  

 

- 단점

1. 양질의 데이터 양이 많아야 한다.

    샘플링한 데이터가 원래 모집단에 가장 가까운 분포를 가진 데이터 분포를 가지고 있어야 한다.

    만약 데이터 양이 부족하다면 즉 labeled data가 부족하다면, 준지도 학습, 파인튜닝을 고려해야 한다.

    * 데이터 양은 얼마나 가지고 있어야 하는가? 

     1) 원래 모집단의 distribution과 흡사하게 갖고 있는 데이터를 충분히 갖고 있을 때 충분한 데이터.

     2) 파라미터 수에 적합한 충분한 데이터 양이 있어야 한다. 

2. 블랙박스 모델 : 설명할 수 없다. (해석이 불가능)

    IT에서는 예측만으로도 중요하지만, 의료 등의 분야에서는 설명력이 중요할 수 있음. 

3. 과적합 문제

4. 컴퓨팅 시간이 길다.

5. 수학적으로 검증이 필요.

6. 하이퍼파라미터 많아 최적의 하이퍼파라미터 찾기 어렵.

     아키텍쳐(Network)를 어떻게 결정(하이퍼파라미터)하냐는 중요한 이슈사항이다. 

     최적의 하이퍼파라미터로 데이터에 적합한 아키텍쳐(Network)를 설계해야 한다. 

     Auto ML을 통해서 하이퍼파라미터 Searching의 가능성을 보여주고 있다. 

     하지만 하이퍼파라미터 찾는 것에 대부분 시간을 소비하고 있다. 

     그렇기에 GPU, 즉 좋은 컴퓨터 성능이 필수이다. 

 

- 딥러닝 성능이 좋아질 수 있었던 결정적 환경

=> 아래 3가지 환경 덕분에 아키텍쳐를 깊고, 넓게 설계가 가능해졌다.

      그리하여 딥러닝 성능이 더 좋아졌다고 할 수 있다. 

 

1) 데이터가 많아졌다.

데이터의 양이 많아질수록 Neraul network의 성능은 더 좋아진다.

 

2) 컴퓨터 성능이 더 좋아졌다.

GPU의 등장과 함께 계산량 처리 성능이 좋아졌다.

이를 통해 최적의 하이퍼파리미터를 잘 찾을 수 있는 환경이 구축되어졌다. 

3) Algorithm 개선

ReLU라는 비선형 활성화함수 등장과 함께, 계산량을 줄이고 비선형성을 보존할 수 있게 되었다.

6. 딥러닝에서의 Data 개념

- 어떤 Data가 딥러닝 설계를 위해 필요한가? 

1) 딥러닝의 장점 중 하나는 밝혀지지 않은 정보를 추출할 수 있는 것이다.

     그런데 이를 위해서는 충분한 데이터양이 전제 조건이다. 

2) 데이터들은 전체 모분포와 유사해야 하는 대표성을 가지고 있어야 한다. 

     그렇기 때문에 Validation Dataset에서도 대표성 있는 Data를 사용해야 한다. 

- Data 양이 30개라면? 

30개에 적합한 아키텍쳐를 구축할 수 밖에 없다. 

많은 파라미터를 가진 Deep한 아키텍쳐를 구축하기 위해서는 그만큼의 Data 양이 필요하다. 

 

 

 

7. 딥러닝의 hidden layer 효과 

< 3) 왜 hidden layer를 여러개 두어야 잘 될까? >

- 개념

더 high-level feature를 학습할 수 있다. 즉 복잡한 문제를 해결 할 수 있게 된다.

왜냐하면 네트워크가 깊어지고 넓어지면서 representive 수용성이 커지게 된다. 

즉 hidden layer가 쌓이면서 복잡한 함수를 표현할 수 있는 능력 가지게 되는 것이다. 

 

- 한 줄 설명​

hidden layer가 많아지면 즉 파라미터 수가 많아지면 representive capacity(수용성)이 커진다. 

이를 통해 더 high-level feature를 추출할 수 있게 된다. 

 

- 구체적 설명

hidden layer가 쌓이면서 더 high-level feature를 학습할 수 있다. 즉 복잡한 문제를 해결 할 수 있게 된다.

구체적으로 hidden layer가 쌓이면서 순차적으로 기존 layer에서 발생된 feature를 조합하여 다음 층으로 전달된다.

이 과정에서 비선형 함수를 사용하며, 이 함수들이 합성되면서 훨씬 더 복잡한 함수로 표현가능하다.

이 것은 더 어려운 문제를 해결할 수 있게 만든다. 이것은 representive 수용성(표현력)이 더 좋아진다고 할 수 있다.

쉽게 말해 비선형함수의 합성함수를 통해 표현력이 더 좋아진 것이다. 

즉 hidden layer가 쌓이면서 복잡한 함수를 표현할 수 있는 능력 가지게 되는 것이다. 

 

- 딥러닝의 다른 말 : Represnetive Learning

 

 

 

 

8. 딥러닝의 구조

 

- layer의 의미

Feature를 "변환"("학습") 시키는 것이다. 

이를 통해 새로운 표현을 찾아가는 것이다. 

입력층에 가까운 layer에서는 low-level 표현이 될 것이며, 

출력층에 가까운 layer에서는 high-level 표현이 될 것이다. 

 

 

 

- weight의 의미

기존 가중치와 결합된 Feature들이 조합해가면서 다음 layer로 이동한다. 

이 때 가중치(W)는 Co-efficient하다.

가중치가 크다면 해당 정보(Feature)를 중요하게 사용한 것이다. 

즉 중요도에 따라 다른 가중치(W)를 적용하며 최적의 조합을 찾는 것이다.

 

 

 

- fully connected의 의미

하나의 Neuron이 이전 layer의 모든 Neuron과 연결되어 있다. 

단 Conv에서는 locally-connected가 되겠다. 

 

 

 

 

9. 딥러닝의 목표 : 일반화(Generation)

- 목표 : Generation(일반화)

지금까지 보지 않았던 새로운 문제에 대해서도, 데이터를 통해 잘 예측해야 한다.

지금까지 보지 않았던 새로운 데이터를 봤을 때, 잘 예측할 수 있는 알고리즘 개발하는 것이 목표이다. 

 

- 해결부분 : Overfit(과적합)

Generation(일반화)에 도움이되지 않는 Feature(정보)까지 학습하면서 Overfit(과적합)이 발생한다.

도움이 되지 않는 정보라 하면 이상치(Outlier)등이 해당사항이 되겠다.