일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- leetcode 344
- airflow docker
- Hortonworks Sandbox
- 배열
- leetcode 561
- docker로 airflow 설치하기
- leetcode 5
- 스파크 완벽 가이드
- leetcode125
- webcrawler
- 블로그 이전했어요
- Python
- leetcode 238
- 머신러닝
- leetcode 15
- leetcode
- leetcode 121
- leetcode 49
- leetcode 234
- 데이터레이크와 데이터웨어하우스
- leetcode 819
- 빅데이터를 지탱하는 기술
- 컴퓨터구조
- 문자열 조작
- leetcode 937
- wargame.kr
- 올바른 변수명 짓기
- ctf-d
- Hadoop
- MapReduce 실습
- Today
- Total
HyeM
[Do it] 3-3|3-4_선형회귀, 경사하강법 본문
지난 단원 복습
- 훈련 데이터 x[n]에 대한 w의 변화율(w_rate)은 x[n]이다.
- 가중치 w를 업데이트 하는 방법은 w + w_rate이다.
- 절편 b를 업데이트 하기 위해서는 b + 1이다.
- 오차 역전파는 y와 y^의 오차(err)를 이용해 가중치와(w)와 절편(b)를 업데이트하는 방법이다.
3-3 | 손실 함수와 경사 하강법의 관계를 알아봅니다.
# 손실함수와 경사하강법
손실 함수
예상한 값과 실제 타깃값의 차이를 함수로 정의한 것
경사 하강법
어떤 손실 함수가 정의되었을때, 손실 함수의 최소가 되는 지점을 찾아가는 방법
+ 앞에서 '오차를 변화율에 곱하여 가중치와 절편 업데이트하기'는 '제곱 오차'라는 손실 함수를 미분한 것과 같음
# 제곱 오차
제곱 오차를 수식으로 나타내면 다음과 같다.
제곱 오차 함수의 최소값을 알아내려면 기울기에 따라 함수의 값이 낮은 쪽으로 이동해야 하는데, 기울기를 구하려면 제곱오차를 가중치나 절편에 대해 미분하면 된다.
가중치에 대하여 제곱 오차 미분하기
가중치w에 대해 편미분하면 아래와 같은데, 보통은 2로 나눈 함수를 편미분하여 사용한다.
그리고 가중치 업데이트할땐, 손실함수의 낮은쪽으로 이동하기 위하여 w에서 변화율을 뺀다.
결과적으로 앞에서 오차 역전파에서 적용했던 수식은 w + err * w_rate는 제곱 오차를 미분한 것과 같게 된다.
절편에 대하여 제곱 오차 미분하기
절편 b에 대해 편미분하면 아래와 같은데, 이 식도 앞에서 작성한 코드와 정확히 일치한다.
앞으로는 손실함수에 대해 편미분을 사용하여 변화율을 계산한다. 변화율은 인공지능 분야에서 특별히 그레이디언트라고 부른다.
3-4 | 선형 회귀를 위한 뉴런을 만듭니다.
경사 하강법 알고리즘을 Neuron이란 이름의 파이썬 클래스로 만들어 진행해본다.
정방향은 w, x, b가 뉴런의 왼쪽에서 오른쪽 방향으로 흘러 y^이 된다고 하여 정방향 계산이라고 부른다.
역방향은 y와 y^에서 얻어낸 차이, 즉 오차가 뉴런의 오른쪽 방향에서 왼쪽 방향으로 흐르는 것처럼 보여 역방향 계산이라고 부른다.
'Study > AI&DeepLearning' 카테고리의 다른 글
[Do it] 로지스틱 뉴런 단일층 신경망 구현, 사이킷런 로지스틱 회귀 수행 (0) | 2021.05.05 |
---|---|
[Do it] 로지스틱 회귀, 시그모이드 함수, 로지스틱 손실 함수 (0) | 2021.04.05 |
[Do it] 3-1|3-2_선형회귀, 경사하강법 (0) | 2021.03.29 |
[Do it] 02-2_Numpy, Matplotlib (0) | 2021.03.29 |
generator와 dataframe & tf.data (0) | 2021.01.25 |