티스토리 뷰
[DL Andrew Ng] C1-Neural Networks and Deep Learning 강의 (W1)
Life4AI 2024. 8. 7. 15:21What is a Neural Network?
주택 가격 예측 예제로 한번 알아보자.
선형회귀를 잘 알고 있으면, 해당 데이터에 그냥 파란색 직선을 그릴지도 모른다.
근데 주택 가격은 음수가 될수 없으니, 음수 부분에 닿을 직선 부분에 선을 꺽어서 그려주어 0으로 그려준다.
굵은 파란 선은 주택 크기 대비 주택 가격을 예측하는 함수가 되었다.
신경망 논문에서는 0으로 유지되다가 직선으로 올라가는 형식의 함수를 자주 보게 될거다.
이를 ReLu(RectifiedLinear Unit) 함수라고 한다. Rectify는 0과 결과 값 중 큰 값을 취하라는 뜻이다.
이것을 우리는 주택 가격을 예측하는 함수를 간단한 신경망으로 생각해 볼 수 있다.
주택의 크기 x가 신경망의 입력이 되고, node로 들어간 다음에, 주택의 가격 y를 출력한다.
이 노드가 하나의 neuron이 된다. (첫번째 그림에 그린 파란색 함수라고 이해하면 됨)
여기서, 뉴런이 하는 일은 주택의 크기를 입력으로 받아서 선형 함수를 계산하고, 결과 값과 0 중 큰 값을 주택 가격으로 예측하는 것이다.
해 그림은 하나의 신경망으로 굉장히 작은 신경망이고, 더 큰 신경망은 아래와 같이 더 많은 neuron들로 이뤄져있다고 생각하면 된다.
size, bedrooms, zip code, wealth를 입력으로 넣어 주택 가격을 예측할 수 있다.
이 중 size와 bedrooms는 family size에 영향을 미치고, zip code는 walkability, zip code와 wealth는 school quality에 영향을 미친다. 즉, family size, walkability, school quality로 주택 가격을 예측할 수 있을 것이다.
4개의 입력값 x와 주택 가격 y의 예제들을 주면, 이 인공신경망은 중간의 것들을 스스로 알아낸다. 물론 충분한 양의 x와 y를 훈련 예제로 준다면 신경망은 x를 y로 연결하는 함수를 알아내는데 정말로 뛰어날것이다.
family size, walkability, school quality 이것들을 우리는 신경망의 hidden unit이라 한다. 위위 그림에선 특정 몇 개의 입력값들이 어떠한 은닉 유닛에만 영향을 미치는 것처럼 화살표가 그려져있지만, 사실 어떤 계산을 하던 n개의 입력값을 모두 받게된다. 즉, 신경망의 입력층과 은닉층은 조밀하게 연결되어있다.
따라서, 입력값 중 해당 뉴런에 관계없는 입력값이라도 입력으로 넣어주어야 한다. 관계 여부는 신경망이 학습하며 알아서 조절해준다.
간단히 정리하면, 신경망은 입력x와 출력y를 매칭해주는 함수를 찾는 과정이다. 충분한 데이터가 주어지면, 함수를 더 잘 알아낼 수 있다.
Supervised Learning with Neural Networks
지도학습은 정답이 주어져있는 데이터를 사용하여 컴퓨터를 학습시키는 방법(입력 X와 출력 Y에 매핑되는 함수 학습)이다. 신경망을 적용하여 지도학습을 진행할 수 있으며, 분야에 따라 적용되는 신경망이 다르다.
응용분야마다 Standard NN, CNN, RNN 등 주로 이용하는 신경망이 다르다.
- Standard NN
- CNN(Convolutional neural network) : 이미지 데이터
- RNN(Recurrental neural network) : 1차원 시퀀스 데이터, 음성 데이터
구조적(Structed data), 비구조적 데이터(Unstructed data)
구조적(Structed data) 및 비구조적 데이터(Unstructed data)를 신경망을 사용하여 예측할 수 있다.
- Structed data : 데이터베이스로 표현된 데이터로, 구조화된 형태로 정보의 특성이 잘 정의되어 있다.
- Unstructed data : 이미지, 오디오와 같이 특징적인 값을 추출하기 어려운 형태의 데이터
딥러닝 덕분에 컴퓨터가 Unstructed data를 인식할 수 있게 되었습니다.
Why is deep learning taking off?
IoT, CPU, GPU 등의 발전을 바탕으로 데이터의 양이 증가하게 되었다. 전통적인 학습 알고리즘(SVM, 로지스틱 회귀 등)은 데이터가 증가함에 약간 성능이 향상되다가 이후엔 성능이 정체기에 이르게 된다. 즉, 방대한 데이터를 제대로 활용하지 못한다는 것이다.
방대한 데이터를 가지고 신경망을 사용하면 더 좋은 성능을 낸다. 작은 신경망, 중간 크기의 신경망, 더 큰 크기의 신경망을 훈련시기면 성능은 점점 좋아지게 된다. 다시 말하면, 깊은 모델일수록 더 많은 데이터가 필요하며, 이는 곧 좋은 성능으로 나타난다.
이렇게 아주 높은 성능을 발휘하기 위해서는 2가지가 필요하다.
1. 충분히 큰 신경망
2. 많은 데이터
보통 규모(scale)가 딥러닝의 발전을 주도했다고 한다. 여기서, 규모는 신경망의 크기 곧 많은 은닉 유닛, 많은 연결과 많은 파라미터를 가지는 것과 데이터의 규모를 의미한다.
위 그래프 구간 중, 데이터의 양이 적은 구간에서는 알고리즘의 상대적 순위가 잘 정의되어 있지 않다. 따라서, 훈련할 데이터가 많지 않다면 구현 방법에 따라 성능이 결정되는 경우가 많다. feature를 다루는 실력이나 알고리즘의 작은 부분이 성능을 크게 좌우한다.
ex) SVM 훈련시킬 때 여러 특성을 잘 관리한다면, 이 구간에서는 신경망보다 SVM이 나을 수 있다.
반대로, 훈련 데이터 셋이 아주 클 땐, 큰 신경망이 일관되게 다른 방법을 압도하는 경향을 보인다.
최근 딥러닝이 강력한 도구로 부상한 이유는 아래 3가지 요인들로 인해 딥러닝 성능이 향상되었기 때문이다.
1. Data - 데이터 양 증가
2. Computation - 컴퓨터 성능 향상
3. Algorithms - 알고리즘의 개선
흥미롭게도, 알고리즘 혁신의 많은 부분이 신경망을 더 빠르게 실행하는데 관여한 것이다.
예를 들어, Sigmoid 함수가 아닌 ReLU 함수를 사용함으로 Gradient 소명 문제를 해결한 것이다.
Sigmoid 함수는 입력 값이 충분히 작으면 출력이 0에 가깝고, 입력 값이 충분히 크면 출력이 1에 가깝다. 이 함수의 특성 때문에, 신경망 학습 과정에서 기울기(gradient)가 작아져서 사라지는 vanishing gradient 문제가 발생하며, 결과적으로 학습이 잘 이루어지지 않는다. 구체적으로, 역전파 과정에서 gradient가 계속 작은 값이 곱해지면서 점점 더 작아지고, 결국에는 거의 0이 되어 파라미터 업데이트가 거의 이루어지지 않는다. 이는 경사하강법을 사용할 때 파라미터가 아주 천천히 바뀌게 되어 학습이 매우 느려지는 문제를 초래한다. (Sigmoid 함수의 미분 값은 최대가 0.25)
이를 해결하기 위해, 신경망의 활성화 함수를 ReLU 함수로 바꾸면 입력값이 양수인 경우의 미분값이 모두 1이기 때문에 Gradient가 소멸하는 문제를 해결할 수 있다. (왼쪽의 경사가 0이긴 하지만)
따라서, Sigmoid를 ReLU 함수로 바꾸는 것만으로도 경사 하강법이라는 알고리즘이 훨씬 빠르게 작동하도록 만들었다.
'Coursera 강의 > Deep Learning Specialization' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 로지스틱 회귀
- Sort
- *args
- 경사하강법
- sorted
- **
- 파이썬
- 딥러닝
- 손실함수
- policy function
- action value function
- 강의노트 정리
- omp: error #15
- 숏코딩
- **kwargs
- *
- python
- 앤드류응
- state value function
- numpy 배열 생성
- Andrew Ng
- computation graph
- 11870
- adrew ng 머신러닝 강의
- NumPy
- 비용함수
- 백준
- 강화학습
- baekjoon
- numpy 배열 속성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |