SlideShare a Scribd company logo
1 of 112
Download to read offline
신경망 첫걸음 요약
타리크 라시드 지음, 송교석 옮김
한빛미디어
Part 1.
인공신경망의 동작 원리
“주변의 소소함으로부터 영감을 얻어 봅시다”
Ch2. 간단한 예측자
• 질문을 받아 생각한 후 대답한다?
• 반복에 의한 학습
100km !!!
생각하는 원숭이 사진: https://flic.kr/p/8TywNY
생각하는 기계
• 어떤 질문(문제)를 입력하면 “생각”을 해서 대답(출력)을 해주는 머신
• 컴퓨터는?
!4
질문 생각
Machine
대답
입력 생각
4 + 4 + 4
출력
3 x 4 12
신경망 첫걸음, 한빛미디어
킬로를 마일로 변환하는 머신 1/3
• 킬로미터 입력을 마일로 연산을 통해 계산해 주는 기계다
• 실제로 100km -> 62.137 mile 을 알고 있다.
• 킬로와 마일은 선형Linear 관계가 있다.
• 어떤 상수c 만큼 늘어나는 관계
!5
킬로 생각
어떤 연산으로?
마일
킬로 생각
상수
마일
0km

100km
0mile

62.137mile
신경망 첫걸음, 한빛미디어
킬로를 마일로 변환하는 머신 2/3
• 그럼 상수c는?
• 임의Random 값 0.5를 대입해 보면?
• 실제 값 62.137과 예측 값 50은 62.127-50 = 12.137
• 이것을 오차error라 한다.
!6
킬로 생각 마일
킬로 생각
km x 0.5
마일
100km 50mile
km x 0.5100km 50mile
62.127mile
실제 값
오차 12.137
신경망 첫걸음, 한빛미디어
킬로를 마일로 변환하는 머신 3/3
• 임의Random 값 증가하면 선형으로 결과도 증가한다는 것을 안다!
• 두번째 시도로 c를 0.6으로 해보자
• 세번째 시도로 c를 0.7으로 해보자 - 값을 지나치는 Overshooting
• 세 번의 시도로 0.7 보다 작고 0.6 보다 큰 값일 것이라 판단
• 오차가 줄고 더욱 실제에 가까와 진다
• 이런 기계를 예측자Predictor 라고 부른다
!7
킬로 생각 마일
킬로 생각
km x 0.6
마일
100km 60mile
km x 0.50
km x 0.70
km x 0.61
100km
61mile
62.127mile
오차 1.137
실제에 조금
가까와 진다
km x 0.7 70mile
실제 값을 지나쳐:
Overshooting
반복에 의한
학습!!!
신경망 첫걸음, 한빛미디어
킬로를 마일로 변환하는 머신
• 반복 Iteration
• 개선해나간다
!8
입력 생각 예측
km x 0.50
km x 0.70
km x 0.61
100km
61mile
62.127mile
오차 1.137
반복에 의한
학습!!!
신경망 첫걸음, 한빛미디어
모델을 정하고 모델 수식화 모델 학습 모델 평가
Ch2. 분류는 예측과 다르지 않다
• 측정된 무리를 분류해 보자
• 새로 발견되 것에 분류가 적용되나?
소녀 사진: https://pixabay.com/photo-774648/
곤충의 분포
• 곤충1 , 곤충2 들을 길이, 폭으로 묶어 그래프에 표시
• 예측자는 선형함수에 의존
• 선형함수는 입력에 대해 직선 형태를 출력
• 선형함수에서 매개변수인 c값을 조정해 직선의 기울기를 변환 시킬 수 있다.
길이
폭
기울기 함수를 써서 직선을 그
으면 두 무리의
분류Classfy
용도라 할 수 있다.
길이
폭
곤충1
곤충2
곤충의 분포
• 기울기를 조절해 다시 그어 본다
• 기울기를 조정해가며 분할자 Classifier를 발견했다고 가정하자.
• 새로운 곤충 C가 발견되어 길이/폭을 측정해 그래프에 표시해 보자.
• 곤충1, 2에 분할자로 분류가 되는가?
길이
폭
이 직선은 분할자길이
폭
길이
폭
분류에 직선이 최선?
다른 방법은?
Ch3. 분류자 학습시키기
사진: https://pixabay.com/photo-1073638/
• 분류자를 학습시켜 분류가 가능하
게 하자
• Delta 값을 이해한다.
• Moderator로서 L 값을 배운다
학습 데이터
• 예측에서 보았듯 현실 세계의 실제 데이터가 필요하다
• 이것은 예측자 또는 분류자에 실제 값을 알려주는 역할로
• 학습 데이터 Learning Data라고 한다
• 두 데이터를 그래프로 시각화 해보자
폭 길이 곤충
3.0 1.0 곤충1
1.0 3.0 곤충2
길이
폭3
곤충1
곤충23
직선의 방정식
• 분할선을 위한 직선의 방정식
• 첫번째 학습데이터
• A = 0.25 라 해보자
• 두 곤충 분류에 비적합
• 분류를 하려면 둘 사이를 가로지르는 기울기 값 필요
y = Ax y = Ax + B 에서 상수 B=0
이므로 직선은 원점을 지난다
길이
폭
y=0.25x
3
곤충 1
곤충 23
1
길이
폭
0.25↑ 필요
3
곤충1
곤충23
1
학습데이터 적용
• 둘 사이를 가르기 위해서는 기울기 값이 커야 하는 것을 알 수 있다.
• 이런 일련의 방법을 알고리즘Algorithm 이라 한다.
• 학습데이터를 함수에 적용해 보자
• A=0.25 가정에서 폭3.0 벌레 길이가 0.75로 예측. 실제 벌레 길이는 1.0이므로 차이가
발생
!15
길이
폭
0.25↑ 필요
3
곤충1
곤충23
1
반복적으로 높여가며 학습해야!!!
- 알고리즘 구현
y = 0.25 ⋅ 3.0 = 0.75
길이
폭
y=0.75
y=1.0
3
3
1 오차 발생
신경망 첫걸음, 한빛미디어
오차 값
• 직선은 y=1.0 이라면 곤충A 위치 (3.0,1.0) 지나나서 분할선이 되지 못한다.
• 목표를 y=1.1 삼아보자
• 오차 E 는
길이
폭
y=1.0
y=1.1
3
3
1
E = 목표값 - 계산값 = 1.1 - 0.75 = 0.35
길이
폭3
3
1
목료값 y=1.1
출력값 y=0.75
E = 0.35
오차를 줄여 정교하게 해야 한다
1.1이 근사치 같아 보인다.
A와 E 관계
• 학습으로 오차E를 이용해 매개변수 A에 대해 알고자 한다.
• A를 임의 초기값 주면 잘못된 y 를 얻는다.
• 이런 목표에 근접한 값을 t라하자, t는 A값을 조금씩 조정하며 얻는다.
• 수학에서는 조정해 가는 작은변화를 Δ (Delta)로 표기한다.
• t를 Δ로 식을 바꿔 보면
y = Ax
t = (A + ΔA)x
길이
폭3
3
1
E
y = (A + ΔA)x
y = Ax
오차를 통해 매개변수 A를 알아간다
Delta A
• E는 목표값t과 실제 값y의 차이 이므로
• 분류가 잘 되도록 기울기A를 다루므로
• 실제 A=0.25에서 E=0.35, x=3.0 이므로 델타A 아래 같다
ΔA =
E
x
ΔA =
E
x
=
0.35
3.0
= 0.1167
즉 A를 델타만큼 업데이트해야 한다
첫번째 학습 데이터
• 기울기 변화 식을 업데이트된A 라 하면
• 이 업데이트된A 를 y 식에 적용하면
• 이렇게 첫번째 학습데이터를 계산했다.
y = (A + ΔA)x = 0.3667 ⋅ 3.0 = 1.1
A + ΔA = 0.25 + 0.1167 = 0.3667
실제 1.0에 근사해 졌다.
폭 길이 곤충 A+DeltaA y
3.0 1.0 곤충1 0.3667 1.1
1.0 3.0 곤충2
길이
폭
y=1.1
3
3
1
두번째 학습 데이터
• 두번째 학습데이터 곤충2는 (1.0, 3.0) 값이고,

곤충1에서 찾은 업데이트한A를 적용하면
• 이제부터 두번째 학습데이터에 대한 오차 개선해 나가야 한다.
• 먼저 학습 데이터 바로 밑 2.9 을 목표로 하자
3.0과 엄청난 차이가 난다
길이
폭
곤충2 (1,3)
y=1.1
3
3
1
y = (A + ΔA)x = 0.3667 ⋅ 1.0 = 0.3667
길이
폭
목표값 2.9
y=1.1
3
3
1
두번째 학습 데이터-오차E
• 두번째 학습데이터의 E는 곤충1 업데이트한 A와 차이므로
• 두번째 학습데이터의 업데이트된A 는,
• 마지막으로 업데이트된A는
ΔA =
E
x
=
2.5333
1.0
= 2.5333
E = 2.9 − 0.3667 = 2.5333
A + ΔA = 0.3667 + 2.5333 = 2.9
폭 길이 곤충 A+DeltaA y
3.0 1.0 곤충1 0.3667 1.1
1.0 3.0 곤충2 2.9 2.9
최종 업데이트한 분류
• 목표값을 기준으로 업데이트한 분류 직선은!
길이
폭
최종
y = 2.9x
y=0.3667x
3
3
1
결과가 곤충1, 곤충2를
구분해 주진 않는다.
Moderate
• 학습데이터에 새 목표값을 정해 A를 정하는 것 보다
• 학습에 기반한 업데이트를 조금씩 조정 Moderate해 올라가는 방법이 머신러닝
의 핵심 개념이다
• 앞의 킬로->마일 학습에서 매개변수c 값을 조금씩 변경해 가던 것과 같은 개념이
다.
•
길이
폭
최종
y = Ax
학습한 업데이트
y=0.3667x
조정1
조정2
3
3
1
델타 값을 조금씩 조정한다
Moderate - 학습률
• 머신러닝에서 조정인자 L을 학습률 Learning Rate라고 하고 업데이트 방정식
을 아래 같이 쓸 수 있다.
• 학습률 L을 제시하는 것은 조정이 없을 때 비해 L 만큼 갱신하겠다는 의미.
• L=0.5로 주면 1/2 만큼 갱신하자는 의미.
ΔA = L(E/x)
조정인자로 학습하기
• 조정인자 L을 임의로 L=0.5로 잡으면
• 첫번째 학습데이터:A=0.25, x=3.0, E=0.35 이고
• DeltaA = 0.5 (0.35/3.0) = 0.0583
• 업데이트된 A = 0.25+ 0.0583 = 0.3083
• y = 0.3083 * 3.0 = 0.9250
• 두번째 학습데이터는 업데이트된 A와 오차를 기반해 학습해 간다.
• A=0.3083, x=1.0
• y = 0.3083 * 1.0 = 0.3083
• 오류E=2.9-0.3083=2.5917 (목표 A=2.9 였으므로 )
• DeltaA = 0.5 * (2.5917 / 1.0) = 1.2958
• 업데이트된A = 0.3083 + 1.2958 = 1.6042
• y = 1.6042 * 1.0 = 1.6042
최초 직선에 비해 위로 올라간 학습
결과를 보인다
조정인자 학습 결과
• 첫번째 학습데이터:
• y = 0.3083 * 3.0 = 0.9250
• 두번째 학습데이터:
• y = 1.6042 * 1.0 = 1.6042
길이
폭
y = (1.6042)x
y=(0.9250)x
최초 직선
y=(0.25)x
3
3
1
Ch5.여러 분류자
• 여러 선형분류자로 

복잡한 문제 학습
https://pixabay.com/photo-3380192/
선형분류자와 논리 함수
• 불 논리 함수
• 데이터가 불 논리함수에 의해 좌우되는지 파악하는 선형 분류자를 생각해 보자
입력A 입력B 논리곱 논리합
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
입력1
생각
논리함수
입력2
출력
선형분류자와 논리곱/논리합
• 예를 들어 비가오고 AND 기온이 35도 이상이면 말라리아가 발병하나?
• 혹은 둘 중 한 가지 조건 OR 조건이면 충족하나?
• 논리 입력을 좌표로 표현했다.
• y=Ax + b 선형함수가 논리함수를 학습할 수 있다.
(0,1)
분할선
(0,0) (1,0)
(1,1)
논리곱
(0,1)
분할선
(0,0) (1,0)
(1,1)
논리합
배타적 논리합 XOR
• 배타적논리합을 분류자로 표현해 보면
• 분류선 1개로 (0,1),(1,0) 을 구분할 수 없다
(0,1)
분할선
(0,0) (1,0)
(1,1)
XOR
입력A 입력B XOR
0 0 0
0 1 1
1 0 1
1 1 0
선형분류자는 한 직선으로
구분되지 않으면 소용없다.
여러개의 분류자
• 여러개 분류선으로 (0,1),(1,0) 을 구분한다.
• 신경망에서 여러개의 분류자로 어떤 형태의 지역이라도 분류해 낼 수 있다.
(0,1)
분할선
(0,0) (1,0)
(1,1)
XOR
Ch6. 자연의 컴퓨터, 뉴런
• 뉴런
• 인공뉴런
• 분계점
• 계층과 가중치
Neuron
• 동물 뇌의 신비한 능력 - 먹이 찾기, 위험 회피 등 복잡한 일을 할 수 있다.
• 초파리 10만개 뉴런
• 선충 302개 뉴런
• 뉴런 원리는 전기신호를 받아 전기신호를 출력한다.
https://pixabay.com/photo-209371/

https://pixabay.com/photo-2022398/
축삭
축삭말단
가지돌기
선형함수와 Neuron
• 생물학적 뉴런은 선형함수 같은 출력을 만들지 않는다.
• 뉴런 입력에 분계점Threshold 에 도달해야 출력이 발생된다.
활성화 함수
• 분계점을 넘어서는 경우 출력 신호를 생성하는 함수를 활성화 함수라 한다.
• 입력이 작은 경우 출력이 0
• 분계점 이상되면 출력이 올라간다
• 수학적으로 다양한 활성화 함수가 있다.
• 문제 결과가 직선을 잘 따르면 선형함수
• 보통 문제에서 2개를 분류할 때 Sigmoid 함수
• Sigmoid 보다 ReLU 와 변형된 활성화 함수를 사용한다.
출력
입력
분계점
3
3
1
계단함수
이런 분계점 반응응 뉴런과 유사
Fire
Sigmoid Function
• 시그모이드함수는 전통적으로 많이 쓰여와서 처음 진입시 적합하다.
• 로지스틱Logistic 함수라고도 한다.
• 실제 문제에 적용하기에는 문제가 있다.
• 초월수 e=2.71828
입력
출력
https://en.wikipedia.org/wiki/Sigmoid_function
y =
1
1 + e−x
Gradient Vanishing 문제
• 시그모이드 함수는 Gradient Vanishing 문제가 있다.
https://www.slideshare.net/jongyeolhyun/ss-79143299
인공 뉴런
• 생물학적 뉴런의 동작원리를 흉내내서
• 여러 입력을 더한다. 그 합을 시그모이드 입력으로 전달한다.
• 합이 분계점 함수인 시그모이드 함수의 입력으로 전달된다.
입력a
시그모이드

함수

y(x)
입력c
출력 y
입력b
입력의

합
• 뉴런은 직전-직후 뉴런들과 상호 연동
• 노드 간 연결 강도를 조정해가야 한다.
계층2 계층3
계층모델
입력
입력
입력
출력
계층1
1 1
2 2
3
2
3
1
3
뉴런
연결
가중치
• 뉴런간 연결의 신호 강도를 나타내는 가중치(weight)를 부여
• 아래는 모든 노드가 연결된 FC Full connected 사용.
계층2 계층3
입력
입력
입력
출력
계층1
1 1
2 2
3
2
3
1
3
w1,1
w1,2
w1,3
w2,1
w2,2
w2,3
w3,1
w3,2
w3,3
w1,1
w1,2
w1,3
w2,1
w2,2
w2,3
w3,1
w3,2
w3,3
가중치가 0에 가깝다면
Ch7. 신호 따라가기
2 계층
• 2계층의 신경망 신호를 따라가 살펴보자
• 입력계층은 값만 주어진다
• 계층의 노드 각각에 가중치가 주어졌다
계층2
1.0
0.5
출력
계층1
1 1
2 2
w1,1 = 0.9
w1,2 = 0.2
w2,1 = 0.3
w2,2 = 0.8
활성화 함수 적용
입력계층
계층2 노드1
• 활성화 함수는 가중치와 입력의 합이 입력된다.
• 이제 x = (1.0*0.9)+(0.5*0.3) = 1.05 이므로
x = awa + bwb + cwc 입력의 합은
조합 combind라 부른다
y =
1
1 + e−1.05
=
1
1 + 0.3499
= 0.7408
계층2
1.0
0.5
출력
계층1
1 1
2 2
w1,1 = 0.9
w2,1 = 0.3
0.7408
계층2 노드2
• 이제 x = (1.0*0.2)+(0.5*0.8) = 0.6 이므로
• 앞으로 4계층, 8계층 그리고 노드가 수백개 있을 수 있다.
• 이런 계산에 적합한 수학적 방법이 행렬Matrix이다.
y =
1
1 + e−0.6
=
1
1 + 0.5488
= 0.6457
계층2
1.0
0.5
출력
계층1
1 1
2 2
w1,1 = 0.9
w2,1 = 0.3
0.7408
w1,2 = 0.2
w2,2 = 0.8
0.6457
Ch8. 행렬
행렬
• 스프레드시트 표
• 변수
• 각 괄호, 둥근 괄호에 행.열로 구성된 2x2 행렬
행렬 계산
• 행렬의 덧셈/뺄셈
• 행렬의 곱 : 열의 수와 행의 수가 일치해야 한다.
https://datascienceschool.net/view-notebook/3f44cfdda2874080a9aa6b034c71d5ec/
점곱 dot product,
내적 inner proudct
신경망 계층의 행렬
• 입력 행렬과 계층의 가중치를 행렬의 곱으로 연산한다.
• 가중치 행렬곱
• 계층1 행렬곱은 계층2의 입력이 된다.
계층2
input1
input2
출력 O
계층1
1 1
2 2
w1,1
w1,2
w2,1
w2,2
Inputhidden =
[
w11 w21
w12 w22]
⋅
[
input1
input2]
=
[
w11 ⋅ input1 + w21 ⋅ input2
w12 ⋅ input1 + w22 ⋅ input2]
신경망 계층의 행렬
• 계층1의 가중치 행렬곱은 계층2에 활성화 함수 입력 값 x로 전달된다.
• 행렬을 축약해 표기하면
• 출력은
X = W ⋅ I
O = sigmoid(X)
x = (input1*w1,1) + (input2*w2,1)
x = (input1*w1,2) + (input2*w2,2)
계층2
input1
input2
출력 O
계층1
1 1
2 2
w1,1
w1,2
w2,1
w2,2
Ch9. 3계층 신경망 행렬곱
• 입력계층
입력 - 은닉 - 출력을 표현한 사진: https://flic.kr/p/5W8eeP
입력계층
• 각 계층은 입력 / 은닉 / 출력 계층으로 부른다
• 행렬로 계층의 입력을 표시할 수 있다.
• 입력의 값은 행렬 I 로
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
w1,1 = 0.9
w1,2 = 0.2
w1,3 = 0.3
w2,1 = 0.3
w2,2 = 0.8
w2,3
w3,1
w3,2
w3,3
0.9
0.1
0.8
I =
0.9
0.1
0.8
은닉계층 입력
• 은닉계층 입력 는 행렬로 표현한다.
• 결국 은닉계층의 입력은,
I =
0.9
0.1
0.8
X = W ⋅ I
Xhidden = Winput_hidden ⋅ I
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
w1,1 = 0.9
w1,2 = 0.3
w1,3 = 0.4
w2,1 = 0.2
w2,2 = 0.8
w2,3 = 0.2
w3,1 = 0.1
w3,2 = 0.5
w3,3 = 0.6
0.9
0.1
0.8
Whidden_output =
0.8 0.7 0.5
0.6 0.5 0.2
0.8 0.1 0.9
Winput_hidden =
0.9 0.2 0.1
0.3 0.8 0.5
0.4 0.2 0.6
은닉계층 입력 계산
• 은닉계층 입력 을 계산하면
• 이 값을 계층에 대입해 보면
Xhidden = Winput_hidden ⋅ I
Xhidden =
0.9 0.2 0.1
0.3 0.8 0.5
0.4 0.2 0.6
⋅
0.9
0.1
0.8
=
1.16
0.42
0.62
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
1.16
0.42
0.62
0.9
0.1
0.8
은닉계층 출력 계산
• 은닉계층 출력은
• 활성함수를 통한 출력은,
• 계층도
Ohidden = sigmoid(Xhidden)
Ohidden = sigmoid
1.16
0.42
0.62
=
0.761
0.603
0.650
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
1.16
0.42
0.62
0.9
0.1
0.761
0.603
0.650
활성화 함수
0.8
은닉계층의 작업이 최종
출력계층 전까지 이루어 진다
출력계층 입력
• 출력계층 입력 는 행렬로 표현한다.
• 은닉계층의 출력이 완성됐으므로,
• 출력계층의 입력은,
X = W ⋅ I
Xoutput = Whidden_output ⋅ Ohidden
I Ohidden
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
1.16
0.42
0.62
0.9
0.1
0.8
0.761
0.603
0.650
Xhidden
출력계층 입력 계산
• 출력계층 입력 을 계산하면
• 계층도에 표시해 보면,
Xouput = Whidden_output ⋅ Ohidden
Xoutput =
0.8 0.7 0.5
0.6 0.5 0.2
0.8 0.1 0.9
⋅
0.761
0.603
0.650
=
0.975
0.888
1.254
I Ohidden
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
1.16
0.42
0.62
0.9
0.1
0.8
0.761
0.603
0.650
Xhidden Xoutput
0.975
0.888
1.254
출력계층 출력 계산
• 은닉계층은 활성함수에 전달한다
• 활성함수를 통한 출력은,
• 계층도에 표시해 보면,
I Ohidden
입력 출력
은닉계층 출력계층입력계층
1 1
2 2
3
2
3
1
3
1.16
0.42
0.62
0.9
0.1
0.8
0.761
0.603
0.650
Xhidden Xoutput
0.975
0.888
1.254
앞 계층에서 마지막 까지
입력신호와 가중치를 조합
해 전달하는 방식을 전파법
이라고 한다.
Ooutput = sigmoid(Xhidden)
Ooutput = sigmoid
0.975
0.888
1.254
=
0.726
0.708
0.778
Ooutput
0.726
0.708
0.778
Ch11.오차의 역전파
• Ch10~Ch12 오차의 역전파
https://en.wikipedia.org/wiki/Neural_backpropagation
전방전달과 역전파
• 전방전달 Feed-forward
• 입력->은닉->출력층으로 예측값을 계산해 가는 과정
• 역전파 Back-Propagation
• 출력값과 예측값의 오차를 줄이는 방향으로 역으로 계산해 가는 과정
입력
은닉계층입력계층
1 1
2 2
출력계층
1
2
출력
입력
은닉계층입력계층
1 1
2 2
출력계층
1
2
출력
여러 노드에 결과 오차E 전파
• 선형분류자는 기울기를 오차에 기반해 조정해 갔다.
• 둘 관계는 단순
• 계층간의 관계에서 노드 결과가 오차에

영향을 받으면 어떻게?
• 가중치 하나에 오차를 적용하는 것은 의미가 없다. 노드에 여러 노드의 가중
치가 기여를 했기 때문.
입력
결과 값의 오차
출력계층입력계층
1 1
2
3
w1,1 = 0.9
w1,2 = 0.2
0.9
0.1
0.8
w3,1 = 0.2
오차를 균일하게 분배
1. 연결한 모든 노드에 균등하게 분배
- 일괄로 연결 수 만큼 균등하게

전달한다.
2. 모든 노드에 차등을 두어 분배
- 가중치가 큰 노드에 큰 오차 반환
- 각 가중치가 가해진 영향에

비례해서 되돌려 준다.
E 1/3
입력
출력계층입력계층
1 1
2
3
w1,1 = 0.9
w1,2 = 0.2
0.9
0.1
0.8
w3,1 = 0.2
E 1/3
E 1/3
결과 값
의 오차
입력
출력계층입력계층
1 1
2
3
w1,1 = 0.9
w1,2 = 0.2
0.9
0.1
0.8
w3,1 = 0.2
E 1/4
E 2/4
결과 값
의 오차
E 2/4
Full Propagation
Back Propagation
역전파
출력의 오차 역전파
두 출력 오차의 역전파는 각 입력 가중치에 비례해 전달한다.
- 결과 값 오차 e1, e2는 학습데이터와 출력의 차이 이다.
- 예) e1 = t1 - o1,
e2 = t2 - o2
e1은 가중치 w11, w21 값에 비례해 나뉘고
e2는 가중치 w12, w22 값에 비례해 나누어 돌려주고 있다.
입력
출력계층입력계층
1 1
2
w1,1 = 0.9
w1,2 = 0.2
0.9
0.1
0.8
w2,1 = 0.2
결과 값의 오차
2
w2,2 = 0.4
e1
e2
O1
O2
오차의 역전파 표현
w11에 역전파되는 비례식
w22에 역전파되는 비례식
e1은 가중치 w11, w21 값에 비례해 나뉘고, e2는 가중치 w12, w22 값에 비례해 나
누어 돌려주고 있다.
예) w11=6, w21=3 이면: 6/6+3 = 2/3
- w11에 2/3 가 전달되고 나머지에 1/3이 전달된다.
w11
w11 + w21
w12
w12 + w22
여러 계층으로 오차 역전파
입력/은닉/출력 계층으로 구성된 간단한 신경망에서 오차의 역전파를 고려해 보자.
- 출력층 오류
- 은닉층 오차 가중치
- 은닉층 오류
- 입력층 오차 가중치
입력
은닉계층입력계층
1 1
2 2
eoutput
출력계층
1
2
whowih
ehidden
역전파
eoutput
who
wih
ehidden
은닉계층에서 오차?
출력 오차가 은닉계층 두 곳 가중치에 분배된다.
- 이 분배되어 전파되는 오차를 재조합Recombine 해서 은닉계층 오차로 이용.
입력
은닉계층입력계층
1 1
2 2
eoutput1
출력계층
1
2
w11
wih
ehidden1
eoutput2
w12
w21
w22 ehidden2
학습데이터는 최종 노드의 결과가
갖어야 할 목표 값에 대한 것. 결국 다
른 노드는 의미가 없다.
은닉계층 오차 수식
출력 오차를 재조합한 은닉층 연결노드 w11,w12로 나뉘어 전달되는 오차의 합
ehidden1 = eoutput1 ⋅
w11
w11 + w21
+ eoutput2 ⋅
w12
w12 + w22
입력
은닉계층입력계층
1 1
2 2
eoutput1
출력계층
1
2
w11
wih
ehidden1
eoutput2
w12
w21
w22
은닉계층 오차 계산
입력
은닉계층입력계층
1 1
2 2
e1 = 0.8
출력계층
1
2
w11 = 2.0
e1 = 0.42
w12 = 1.0
w21 = 3.0
w22 = 4.0 e2 = 0.5
e2 = 0.88
w11 = 3.0
w12 = 1.0
w21 = 2.0
w22 = 7.0
0.48
0.1
0.4
0.32
e1 = 0.32 + 0.1 = 0.42
e2 = 0.48 + 0.4 = 0.88
eoutput1 ⋅
w11
w11 + w21
= 0.8 ⋅
2.0
2.0 + 3.0
= 0.32
eoutput2 ⋅
w12
w12 + w22
= 0.5 ⋅
1.0
1.0 + 4.0
= 0.1
입력계층 오차 계산
입력
은닉계층입력계층
1 1
2 2
e1 = 0.8
출력계층
1
2
e1 = 0.42
e2 = 0.5
e2 = 0.88
w11 = 3.0
w12 = 1.0
w21 = 2.0
w22 = 7.0
e1 = 0.362
0.252
0.167
eoutput1 ⋅
w11
w11 + w21
= 0.42 ⋅
3.0
3.0 + 2.0
= 0.252
eoutput2 ⋅
w12
w12 + w22
= 0.88 ⋅
1.0
1.0 + 7.0
= 0.11
0.11
0.77
e1 = 0.252 + 0.11 = 0.362
e2 = 0.167 + 0.77 = 0.937
e1 = 0.937
Ch13. 행렬곱 이용 오차역전파
• 오차의 역전파 행렬
• 역전파 행렬의 간소화
https://en.wikipedia.org/wiki/Matrix_multiplication
은닉계층 역전파 행렬곱
• 오차의 역전파를 행렬곱으로 벡터화 Vectorize 해보자,
• 출력계층 오차
• 은닉계층 오차 (역전파한 오차)
eoutput =
[
e1
e2]
ehidden =
w11
w11 + w21
w12
w12 + w22
w21
w21 + w22
w22
w22 + w12
⋅
[
e1
e2]
Ch9 계층 행렬화 참조
오차의 역전파 흐름
• 역전파 행렬곱
•
ehidden =
w11
w11 + w21
w12
w12 + w22
w21
w21 + w22
w22
w22 + w12
⋅
[
e1
e2]
입력
은닉계층입력계층
1 1
2 2
e1
출력계층
1
2
w11wih
ehidden
w12
w21
w22 e2
역전파 행렬의 간결화
• 가중치에 따라 오차를 분배하는데, 분모 부분은 일종의 정규화 인자
• 정규화 인자를 무시해도 오차의 일정 비율만 잃는다.
• 가중치 만으로도 잘 동작한다.
• 저자의 http://bit.ly/2m2z2YY 에 역전파 방법을 비교한 결과 참조
• 전파 가중치 행렬과 비슷해 보인다
• 역전파 행렬을 전치 Transpose하면 같은 모습이된다.
•
ehidden =
[
w11 w12
w21 w22]
⋅
[
e1
e2]
Inputhidden =
[
w11 w21
w12 w22]
⋅
[
input1
input2]
ehidden =
[
w11 w12
w21 w22]
⋅
[
e1
e2]
=
[
w11 w21
w12 w22]
T
⋅
[
e1
e2]
가중치 행렬을
전치하면?
오차의 역전파 행렬
ehidden =
w11
w11 + w21
w12
w12 + w22
w21
w21 + w22
w22
w22 + w12
⋅
[
e1
e2]
ehidden =
[
w11 w12
w21 w22]
⋅
[
e1
e2]
ehidden =
[
w11 w21
w12 w22]
T
⋅
[
e1
e2]
ehidden = WT
hiddenouput ⋅ erroroutput
Ch14. 가중치의 업데이트
• 오차와 가중치 업데이트
https://unsplash.com/photos/E3wehabi_B4
역전파 오차와 가중치 갱신?
역전파한 오차를 가중치에 어떻게 작용해 주나?
오차를 가중치에 적용
해야 한다!!!
입력
은닉계층입력계층
1 1
2 2
e1 = 0.8
출력계층
1
2
w11 = 2.0
e1 = 0.42
w12 = 1.0
w21 = 3.0
w22 = 4.0 e2 = 0.5
e2 = 0.88
w11 = 3.0
w12 = 1.0
w21 = 2.0
w22 = 7.0
e1 = 0.362
e2 = 0.932
0.32
가중치 계산은…
각 계층은 노드에 입력되는 신호에 가중치를 적용하고 합을 구한 후에 활성화 함수
를 작용시켜서 이의 합을 다음 계층 입력으로 제공하는 복합적인 방식이다.
망 안의 복잡한 가중치 조합으로 함수의 함수, 함수의 함수...
간단한 대수식으로 표현이 어렵다.
이런 문제에 봉착했을 때 - 그냥 추측으로 가중치를 선택하면?
입력
은닉계층입력계층
1 1
2 2
e1 = 0.8
출력계층
1
2
w11 = 2.0
e1 = 0.42
w12 = 1.0
w21 = 3.0
w22 = 4.0 e2 = 0.5
e2 = 0.88
w11 = 3.0
w12 = 1.0
w21 = 2.0
w22 = 7.0
e1 = 0.362
e2 = 0.932
0.32
무차별 대입
무차별 대입
• 무차별 대입Brute force
• 예) 비밀번호를 알아내는데 순차적으로 대입해 알아내는 것을 익히 안다.
• 가중치에 대입해 보면?
• 각 가중치가 -1~1 사이 값이므로 1000가지 중 하나라고 가정해 보자
• 3개 노드 3개층이므로 18개 가중치가 있으므로 

18,000개만 테스트 하면 된다.
• 500개 노드라면? 3000개 가중치므로 30만개
• 한 조합을 테스트하는데 1초라면 208일 걸려야 한다.
• 현실적으로 무차별대입은 어렵다.
경사 하강법
• 경사 하강법Gradient Descent는 최저점을 한단계씩 찾아 간다.
• 함수가 너무 복잡해 대수학을 통해 찾기 어렵다면 경사하강법을 사용해 볼 수
있다. 다만 정답에 접근하는 방식이므로 해답을 얻지 못할 수 있다.
• 다음 오차 함수 y가 있으면 y를 최소화하는 x를 찾는다면,
• 위치에서 기울기에 따라 아래인지 위인지 파악
• x축으로 한 단계씩 이동해 최저점인지 알아 간다. x는 증가한다.
• 반대로 양의 기울기에서는 x값이 감소한다.
y = (x − 1)2
+ 1 y = (x − 1)2
+ 1
음(-) 기울기
다음 단계
y = (x − 1)2
+ 1
다음 단계
양(+) 기울기
짧아진다
3차원 공간 경사하강법
• 많은 변수를 가진 다차원 함수 -> 3차원 공간
• 3차원 공간 함수도 경사하강법이 가능하다.
• 3차원 공간의 계곡에 빠지는 상황도 있다
• 잘못된 최저점 : local minimum
• 제대로된 최저점: global minimum
• Local minimum을 피하기 위해 각기 다른 위치에서 출발해 최적화 한다.
https://towardsdatascience.com/improving-vanilla-gradient-descent-f9d91031ab1d
오차함수-제곱오차 방식
• 신경망에 경사하강법을 사용하려면 적합한 오차함수Error function 필요
• 오차는 학습데이터와 결과의 차이므로 결과함수를 오차함수로 변환 가능
• 다음 표 세 가지 오차 후보를 살펴보자,
• 제곱오차 방식 (목표-실제)^2 을 많이 선호
• 경사하강법의 기울기 구하는 대수학이 간단해진다
• 오차함수가 부드럽고 연속적이라 경사하강법에 잘 동작
• 최저점에 다다를 수록 경사가 점점 작아지므로 

목표를 오버슈팅할 가능성이 낮다.
실제 결과 목표 값 오차(목표-실제) 오차|목표-실제| 오차(목포-실제)^2
0.4 0.5 0.1 0.1 0.0.1
0.8 0.7 -0.1 0.1 0.01
1.0 1.0 0 0 0
합: 0 0.2 0.002
미분으로 오차함수 구하기
• 경사하강법을 사용하려면 가중치에 대한 오차함수의 기울기를 구하는데 미분
Calculus이 필요하다.
• 미분은 변화율을 구하는 것이다. 예를 들어 스프링에 힘을 얼마나 주느냐에
따라 스프링 길이가 어떻게 달라지냐는 것이다.
• 오차는 가중치의 변화에 얼마나 민감한가?
http://taewan.kim/post/cost_function_derivation/
신경망에 수많은
가중치가 있다
미분으로 오차함수 구하기
• 미분으로 표현하는 오차의 가중치는
• 입력/은닉/출력 계층에서
• 은닉-출력의 오차함수
가중치 변화에 따라
오차 E가 얼마나 변하나?
δE
δwjk
입력
은닉계층입력계층
i=1 j=1
i=2 j=2
출력계층
k=1
k=2
wjk
노드오차
= 목표값 - 실제값
ok결과값,
ex = tk − okwij xj
xj
δE
δwjk
=
δ
δwjk
⋅
∑
n
(tn − on)2
n개 노드에서 목표-실제값
을 제곱해 모두 더한 것
미분으로 오차함수 구하기
• 계층의 결과는 직전 층의 가중치만 영향을 받는다.
• 오차함수 구할 때 합 기호가 필요가 없어진다.
• 이전 층에 대해서 간단히 식을 쓸 수 있다.
입력
은닉계층입력계층
i=1 j=1
i=2 j=2
출력계층
k=1
k=2
wjk
노드오차
= 목표값 - 실제값
ok결과값,
ex = tk − okwij xj
xj
δE
δwjk
=
δ
δwjk
(tk − ok)2
결과는 Wjk 에 의해서만
영향을 받는다
은닉층 Xj는 Wij만
영향을 받는다
미분으로 오차함수 구하기
• 식을 바로 앞 가중치의 변화에 따른 출력 변화를 구할 수 있도록
• 연쇄법칙을 이용해 미분작업을 한다.
• 먼저 첫번째 항에서 E는 알고 있듯이 므로
• 두번째 항에서 Ok는 노드k 결과 합으로, 입력 신호 가중치를 시그모이드 함
수를 적용한 것
• 시그모이드 함수를 미분하고 정리하면 마무리가 된다.
δE
δwjk
= − 2(tk − ok)2
⋅
δok
δwjk
δE
δwjk
=
δE
δok
⋅
δok
δwjk
E = (tk − ok)2
δE
δwjk
= − 2(tk − ok)2
⋅
δ
δwjk
sigmoid(
∑
j
wjkoj)
미분으로 오차함수 구하기
• 시그모이드 함수의 x에 대한 미분값은
• 시그모이드 함수 미분한 식은 간단하고 활용도 편리해 인기가 있다.
• 결과를 정리하면
• 은닉층-출력층 가중치 업데이트에 대해서 간소화로 상수를 제거한 최종 수식
δE
δwjk
= − 2(tk − ok)2
⋅ sigmoid(
∑
j
wjk ⋅ oj)(1 − sigmoid(
∑
j
wjk ⋅ oj)) ⋅
δ
δwjk
(
∑
j
wjk ⋅ oj)
δ
δwx
sigmoid(x) = sigmoid(x)(1 − sigmoid(x))
= − 2(tk − ok)2
⋅ sigmoid(
∑
j
wjk ⋅ oj)(1 − sigmoid(
∑
j
wjk ⋅ oj)) ⋅ oj
δE
δwjk
= − (tk − ok) ⋅ sigmoid(
∑
j
wjk ⋅ oj)(1 − sigmoid(
∑
j
wjk ⋅ oj)) ⋅ ojsigmoid(
∑
j
wjk ⋅ oj)sigmoid(
∑
j
wjk ⋅ oj)
목표-실제 값 최종층 입력 신호 i_k 이전 은닉층 j의 결과
미분으로 오차함수 구하기
• 입력층-은닉층 가중치의 오차 기울기
• 첫번째 항: 은닉층에서 역전파 오류
• 두번째 항: 은닉층 노드 j로 들어오는 입력값 가중치 적용 결과
• 세번째 항: 입력층 출력 결과
ej
ij
oi
δE
δwij
= − (ej) ⋅ sigmoid(
∑
i
wij ⋅ oi)(1 − sigmoid(
∑
i
wij ⋅ oi)) ⋅ oisigmoid(
∑
i
wij ⋅ oi) sigmoid(
∑
i
wij ⋅ oi)
학습률
• 가중치는 기울기와 반대 방향으로 진행된다
• 학습률 수식은 입력-은닉, 은닉-출력 사이 가중치에 동일하게 적용
• 학습률 인자를 적용해 변화의 정도를 조정한다.
• 데이터에 나쁜 영향 줄이고, 오버슈팅등 방지
• 이 식은 갱신 새 가중치는 상수를 곱한 오차 기울기를 원래 가중치에서 빼줌.
• 양의 기울기는 가중치를 줄이고
• 음의 기울기는 가중치를 늘이기 위함
• 상수 𝛼 는 학습률로 오버슈팅을 방지하고 변화의 강도 조정
•
new wjk = old wjk − α
δE
δwjk
학습률은 문제에 따라 조금씩
다르게 튜팅해야 한다.
학습률
• 오차 기울기 수식을 계층 사이에서 경우에 따라 다르게 적용하면 된다.
• 행렬식으로 계산을 풀어 보면
• 맨 뒤항은 직전 계층 Oj 의 전치행렬
• 가중치 업데이트 행렬을 표현하면
Δw1,1 Δw2,1 Δw3,1 ⋯
Δw1,2 Δw2,2 Δw3,2 ⋯
Δw1,3 Δw2,3 Δwj,k ⋯
⋯ ⋯ ⋯ ⋯
=
E1 ⋅ S1(1 − S1)
E2 ⋅ S2(1 − S2)
Ek ⋅ Sk(1 − Sk)
⋅ [O1 O2 Oj ⋯]
다음 계층에서 값들 이전 계층 j의 결과
학습률 생략 - 상수로 행렬곱 수
행하는데 영향을 주지 않는다
ΔWjk = α ⋅ Ek ⋅ Ok(1 − Ok) ⋅ OT
j
15. 가중치 업데이트 예제
https://pixabay.com/photo-1181820/
가중치 업데이트 예제
• 아래 같이 은닉층 노드 값 O_j1, O_j2 를 가진 망이 있다.
• 은닉-출력계층 사이 W11=2.0인 가중치를 업데이트 하려고 한다.
• 오차기울기를 사용해서 가중치 W11을 업데이트 해보자
입력
은닉계층입력계층
1 1
2 2
e1 = 0.8
출력계층
1
2
w11 = 2.0
e1 = 0.42
w12 = 1.0
w21 = 3.0
w22 = 4.0 e2 = 0.5
e2 = 0.88
0.4
oj=2 = 0.5
oj=1 = 0.4 0.32
0.48
출력
오차 기울기
• 은닉-출력층의 오차기울기
• 첫째항: 는 오차 e1 이다. 그림에서 e1=0.8 이다.
• 두번째 항: 시그모이드 내의 합 는 (2.0*0.4)+(3.0*0.5)=2.3 이다.
• 그러면 시그모이드 함수 값은 는 0.909
• 0.909*(1-0.909)=0.083 이다.
• 마지막 항: Oj는 j=1인 가중치 w11을 계산하므로 Oj1=0.4이다
• 이 세항을 계산하면 -(0.8*0.083*0.4) = -0.0265 가 된다.
• 학습률이 0.1이라면 변화량은 0.1*-0.0265=-0.00265
• 새로운 W11=2.0-(-0.00265) = 2.00265 가 된다.
• 작은 변화지만 수백, 수천번 반복해가며 가중치가 최적의 값으로 수렴한다.
δE
δwjk
= − (tk − ok) ⋅ sigmoid(
∑
j
wjk ⋅ oj)(1 − sigmoid(
∑
j
wjk ⋅ oj)) ⋅ ojsigmoid(
∑
j
wjk ⋅ oj)sigmoid(
∑
j
wjk ⋅ oj)
−(tk − ok)
∑
j
wjk ⋅ oj
1/(1 + e−
2.3)
16. 데이터 준비하기
https://pixabay.com/photo-984007/
데이터 준비
• 신경망을 이용해 문제를 해결하기 위해서는, 올바른 학습 데이터를 제공해야 한
다. 그래서 학습데이터, 가중치 초기화, 결과 값을 잘 디자인 하는 것 만으로도 좋
은 신경망 학습 모델을 구성할 수 있다.
• 시그모이드 함수에 큰 입력값이 입력되면,
• 활셩화 함수는 평평한 형태를 가진다
• 입력 값, 결과 값 과 가중치 초기화를 위한 준비를 살펴본다.
0.5
0
x
1
y =
1
1 + e−x
입력 값
• 기울기를 이용해 가중치를 업데이트하므로 평평한 활성화 함수는 문제가 있다.
• 가중치의 변화는 활성화함수 기울기에 따른다.
• 작은 기울기는 곧 학습 능력에 제한된다는 의미
• 이것이 신경망에 포화Saturation 이 발생했다는 의미
• 포화가 안되게 입력값을 작게 유지해야 한다.
• 입력신호 Oj 영향도 있어서 가중치를 작게 만들수도 없다.
• 그래서 데이터의 범위를 0.0~1.0 사이에 놓이도록 정규화를 하는 것이다.
• 때로는 입력값에 0.01 같이 작은 오프셋 값을 더해 입력이 0이 안되게 한다.
• 입력이 0이면 Oj=0 이 되어 업데이트 수식 능력이 사라진다.
δE
δwjk
= − (tk − ok) ⋅ sigmoid(
∑
j
wjk ⋅ oj)(1 − sigmoid(
∑
j
wjk ⋅ oj)) ⋅ oj
결과 값
• 최종 출력층에서 활성화 함수가 1.0 넘는 값을 못만들면 목표값 설정에 문제
• 로지스틱 함수는 0.0~1.0 사이의 값을 점근적Asymptotically으로 출력한다.
• 불가능 영역 0.0, 1.0 설정을 막기 위해 0.01~0.99 사이를 이용하기도 한다
0.5
0
x
1
y =
1
1 + e−x
활성화함수가
도달할 수 없는 범위
활성화함수 범위:
0.0~1.0
가중치 초기화
• 가중치도 큰 값이 입력되면 포화가 되므로, 보통 초기화에 -1.0~1.0 사이의 임의
값으로 선택한다.
• 과학자들이 특정 신경망의 형태와 활성화 함수가 주어졌을 때 수학적으로 가중
치의 임의 값을 경험적으로 알아냈다.
• 노드로 오는 연결 노드의 개수에 루트를 씌운 역수를 취해 얻는 범위
• 예) 각 노드가 3개 연결노드가 있으면:
• 각 노드가 100개 연결노드가 있으면:
±1/ 3 = ± 0.57
±1/ 100 = ± 0.1
A. 미분
• 손으로 구하는 미분
• 손으로 구하지 않는 미분
https://pin.it/nuozeufk55db4c
직선
• 표 데이터를 표현
• 속도를 s, 시간을 t 라고 하자
• 속도 식으로 표시하면 s=30
• 시간에 대한 변화율은 0므로 속도는 시간에 대해 의존관계가 없다.
• 의존도 0
• 시간 경과에 따른 속도의 변화를 미분 수식으로 표현하면
미분이 만들어지기
까지 이해
시간(분) 속도(마일/시간)
0.0 30
0.5 30
1.0 30
1.5 30
2.0 30
2.5 30
변화를 파악하는
미분을 하는 것
δs
δt
= 0미분계수
derivarative
시간에 따른 변화가
없어 변화율을 0
경사를 가지는 직선
• 시속 30 마일에서 가속패달을 서서히 밟고 있는 차가 있다고 하자
• 속도의 수식으로 표현하면: speed = 30 + (10 * time)
기호로 표현하면 : s = 30 + 10t
• 시간의 변화에 따른 속도의 변화는 어떻게 표현???

속도는 매분 마다 10씩 변화하는 의존 관계가 성립한다.
• 다음같은 변화의 의존식이 성립
시간(분) 속도(마일/시간)
0.0 30
0.5 35
1.0 40
1.5 45
2.0 50
2.5 55
3.0 60
기울기 10을 가진 1차함수
δs
δt
= 10
곡선
• 정지 상태에서 가속을 해서 서서히 속도가 오르는 차가 있다.
• 매 분 시간의 제곱으로 데이터가 변화한다.
• 방정식으로 표현하면
• 곡선에서 시간의 변화에 따른 속도의 변화는 어떻게 표현???
• 3분 - 9마일, 6분 - 36마일 …
시간(분) 속도(마일/시간)
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
s = t2
손으로 구하는 미분
• 다음 3분, 6분의 시점의 기울기를 비교하면,
• 6분에서 기울기가 큰 것을 확인 가능하다.
• 어느 시점 곡선의 기울기는 변화율이다.
• 곡선 기울기는 해당 시점에 탄젠트라는 직선을 그어 주어 추정 할 수 있다.
• 그 순간 기울기
• Δs/Δt =
• 9.6/0.8 = 12.0
• 분당 시속 12.0마일 변화율
경사면
높이 Δs
길이Δt
Delta는 작은 변화다
삼각형 크기를 자로 재서
계산해 보자
손으로 구하지 않는 미분
• t=3을 기준 2분 차이나는 t=1, t=5 에 직선을 그었다
• 수학적으로 2분의 Δx 를 가진다.
• x를 사이에 x - Δx 와 x + Δx
• x - Δx 와 x + Δx 사이 직선을 그어주면, 이 직선은 중간지점 x 에서의 탄젠트와 

거의 동일한 기울기를 갖는다
• 곡선의 기울기와 비슷한 기울기를 가진다 (근사치)
경사면
높이 Δs
길이Δt
x x+Δxx-Δx
손으로 구하지 않는 미분
• 이x - Δx 와 x + Δx 사이 직선의 기울기를 구해보자
• 기울기 = 높이/길이
• 높이: 속도의 차이므로

1분에서 속도 1^2, 5분에서 속도 5^2 의 차이 이므로 24가 된다.
• 길이는 시간 x - Δx 와 x + Δx의 차이 5-1=4가 된다.
• 기울기는 24/4 = 6(mph/m) 이 된다.
• 두 점 사이 직선의 기울기를 구하므로 아직 근사치이다.
• Δx 를 더 작게 해서 촘촘하게 하면 어떨까?
경사면
높이 Δs
길이Δt
x x+Δxx-Δx
아직까지는 근사치이다.
손으로 구하지 않는 미분
• Δx 를 더 작게 해서 촘촘하게 하면 어떨까?
• 그림 같이 Δx를 작게 하면 t=3 위치에 가까와 진다.
• Δx 를 작게 할 수록 실제 탄젠트와 점점 가까와 진다.
• 수학에서 정답을 근사치로 잡고, 편차를 점점 작게 해가며 개선해가는 방법이 매
우 강력하다. 이 같이 직접적으로 공략이 어려운 문제를 정복해 왔다.
경사면
Δx = 0.1
Δx = 0.5
Δx = 1
Δx = 3
그래프 없이 하는 미분
• 앞의 탐구로 속도는 s = t^2 시간의 함수로 표현했다.
• 시간의 함수가 속도에 어떻게 변화하는지를 기울기를 통해 살펴보았다.
• 변화률을 식으로 정리하면
• 변화율: 높이/길이
• 높이: (t + Δx)^2 - (t - Δx)^2
• 길이: (t + Δx) - (t - Δx) = 2Δx
• 풀어서 정리하면
• 앞의 근사치 구한 결과에서
• t=3 일때 변화율=6, t=6일 때 변화율=12 임을 확인했다.
δs
δt
=
Height
Length
=
(t + Δx)2
− (t − Δx)2
2Δx
δs
δt
=
4tΔx
2Δx
= 2t
그러나 변화하는 Δ 가
상쇄되었다
그래프 없이 하는 미분
• 속도가 더 복잡한
• 변화률을 식으로 정리하면
• 높이 t + Δx에서 속도와 t - Δx의 차이
•
• 길이: (t + Δx) 와 (t - Δx) 차이
•
• 변화율 식으로 정리
δs
δt
=
(t + Δx)2
+ 2(t + Δx) − (t − Δx)2
+ 2(t − Δx)
2Δx
s = t2
+ 2t
(t + Δx)2
+ 2(t + Δx) − (t − Δx)2
+ 2(t − Δx)
2Δx
=
4tΔx + 4Δx
2Δx
= 2t + 2
여전히 변화하는
Δ 가 상쇄되었다
그래프 없이 하는 미분
• 속도를 시간의 세제곱으로 한다면,
• 변화률을 식으로 정리하면
• 높이는 t + Δx에서 속도와 t - Δx의 차이
• 길이는 (t + Δx) 와 (t - Δx) 차이
• 변화율 식으로 정리
• Δx가 점점 작아져 무한히 작아져야 정확한 기울기를 구할 수 있다.
• 무한히 작아지면 0에 가까와지고, 결과적으로 0이 된다.
δs
δt
=
(t + Δx)3
− (t − Δx)3
2Δx
s = t3
(t + Δx)3
− (t − Δx)3
2Δx
=
2t2
Δx + 2Δx3
2Δx
= 3t2
+ Δx2
Δ 가 포함되었다
δs
δt
= 3t2
+ Δx2
= 3t2 미분을 통해
해답을 얻었다
패턴
• 여기까지 Δx 같은 델타로 미분계수를 구하는 것을 보았다.
• t함수 미분계수는 같지만 t의 지수가 1씩 줄고 있다.
• t^3은 t^2, t^2 은 t가 되고 있다.
• 계수는 t는 t^1 이므로 t^0가 되어 1이 된다
• 3,4,5 같은 상수, a, b, c 같은 변수 상수도 변화율을 갖지 않으므로 사라진다.
• t^2은 2t, t^3은 3t^2 이 된다.
• 승수multiplier 이용 단계도 2t^5은 2*5t^4 = 10t^4 가 된다.
• 패턴:
δs
δt
= 2ts = t2
δs
δt
= 2t + 2s = t2
+ 2t
δs
δt
= 3t2
s = t3
y = axn δy
δx
= naxn−1
신경망에서 다항식의
미분 정도만 이해해도 좋다
도함수
함수의 함수
• 다음 같은 함수가 있다:
• y는 다음 같다:
• y의 변화에 따라 f의 변화:
• 그러면 x의 변화에 따른 f는 어떻게 변할까?
• 이렇게 쓸 수 없다:
• 연쇄법칙Chain rule을 사용한다.
• x변화로 식을 쓴다
• 신경망에서 역전파에서 연쇄법칙은 핵심중 핵심이다.
f = y2
y = x3
+ x
δf
δy
= 2y
f = (x3
+ x)2
δf
δx
= 2(x3
+ x)
δf
δx
=
δf
δy
⋅
δy
δx
함수의 함수
• 신경망 역전파에서 연쇄법칙Chain rule을 이용하면 각 계층을 한 층 한 층 풀
어 갈 수 있다.
• 함수 와 에서 x의 변화에 따른 f의 변화를 구한다면
• 연쇄법칙으로 정리하면
• 두 부분을 정리하면 이므로
• 조합해 보면 인데, 이므로 x 식으로 표현할 수
있다.
δf
δx
=
δf
δy
⋅
δy
δx
f = y2
y = x3
+ x
δf
δy
= 2y
δy
δx
= 3x2
+ 1
δf
δx
= (2y) ⋅ (3x2
+ 1) y = x3
+ x
δf
δx
= (2(x3
+ x)) ⋅ (3x2
+ 1)
= (2x3
+ 2x) ⋅ (3x2
+ 1)
함수의 함수
• 함수 상태에서 x의 변화에 따른 f의 변화를 구한다면
• 이런 방법으로 미분을 하면 동일한 결과를 얻는다.
f = (x3
+ x)2
= (2x3
+ 2x) ⋅ (3x2
+ 1)
= 2 ⋅ (x3
+ x)(3x2
+ 1)
f′ = 2 ⋅ (x3
+ x)(x3
+ x)′ = 2 ⋅ (x3
+ x)(3x2
+ 1)
함수의 함수
• 다른 독립변수를 처리하는 방법으로 다음 함수의 예를 들어 보면,
• x, y ,z 은 독립적이다. 어떤 값도 가능, 다른 변수 값에 의존치 않는다.
• 다른 변수의 변화에 영향을 받지 않는다.
• 에서 y는 x 영향을 받는다.
• 를 풀기 위해 두 부분으로 나눈다
• 2xy 를 x에 대해 미분하면 2y (y가 x에 독립적)
• 3x^2z 를 미분하면
• 4z 은 x가 없으므로 상수로 취급되어 없어져 버린다.
• 그러므로
• 독립적인 변수들은 과감히 무시, 복잡한 수식에 대해서도 미분을 수월하게 할 수
있다.
3x2
z = 2 ⋅ 3xz
y = x3
+ x
δf
δx
= 2y + 6xz
f = 2xy + 3x2
z + 4z
δf
δx

More Related Content

Similar to 신경망 첫걸음 - 한빛미디어 요약

2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝Jinwon Lee
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련Haesun Park
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learningHaesun Park
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)Jeonghun Yoon
 
3.neural networks
3.neural networks3.neural networks
3.neural networksHaesun Park
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagationJinSooKim80
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc우진 신
 
ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term ReviewMario Cho
 
데이터처리와 통계 기본 머신러닝
데이터처리와 통계 기본 머신러닝데이터처리와 통계 기본 머신러닝
데이터처리와 통계 기본 머신러닝Sunggon Song
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능도형 임
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습Juhui Park
 
입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transformjdo
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇYoonwhan Lee
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Jungkyu Lee
 

Similar to 신경망 첫걸음 - 한빛미디어 요약 (20)

2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learning
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
3.neural networks
3.neural networks3.neural networks
3.neural networks
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc
 
ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term Review
 
데이터처리와 통계 기본 머신러닝
데이터처리와 통계 기본 머신러닝데이터처리와 통계 기본 머신러닝
데이터처리와 통계 기본 머신러닝
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습
 
입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇ
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 

More from 고포릿 default

비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys고포릿 default
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용고포릿 default
 
Raspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with PythonRaspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with Python고포릿 default
 
BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2고포릿 default
 
앱 클라우드 서비스 개발
앱 클라우드 서비스 개발앱 클라우드 서비스 개발
앱 클라우드 서비스 개발고포릿 default
 
안드로이드에서 Baasio 서비스 이용하기
안드로이드에서 Baasio 서비스 이용하기 안드로이드에서 Baasio 서비스 이용하기
안드로이드에서 Baasio 서비스 이용하기 고포릿 default
 

More from 고포릿 default (8)

비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys비트교육센터-AWS활용 1주차: ssh authorized_keys
비트교육센터-AWS활용 1주차: ssh authorized_keys
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
 
Raspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with PythonRaspberry Pi GPIO Programming with Python
Raspberry Pi GPIO Programming with Python
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
 
BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2BigData, Hadoop과 Node.js, R2
BigData, Hadoop과 Node.js, R2
 
BigData, Hadoop과 Node.js
BigData, Hadoop과 Node.jsBigData, Hadoop과 Node.js
BigData, Hadoop과 Node.js
 
앱 클라우드 서비스 개발
앱 클라우드 서비스 개발앱 클라우드 서비스 개발
앱 클라우드 서비스 개발
 
안드로이드에서 Baasio 서비스 이용하기
안드로이드에서 Baasio 서비스 이용하기 안드로이드에서 Baasio 서비스 이용하기
안드로이드에서 Baasio 서비스 이용하기
 

신경망 첫걸음 - 한빛미디어 요약

  • 1. 신경망 첫걸음 요약 타리크 라시드 지음, 송교석 옮김 한빛미디어
  • 2. Part 1. 인공신경망의 동작 원리 “주변의 소소함으로부터 영감을 얻어 봅시다”
  • 3. Ch2. 간단한 예측자 • 질문을 받아 생각한 후 대답한다? • 반복에 의한 학습 100km !!! 생각하는 원숭이 사진: https://flic.kr/p/8TywNY
  • 4. 생각하는 기계 • 어떤 질문(문제)를 입력하면 “생각”을 해서 대답(출력)을 해주는 머신 • 컴퓨터는? !4 질문 생각 Machine 대답 입력 생각 4 + 4 + 4 출력 3 x 4 12 신경망 첫걸음, 한빛미디어
  • 5. 킬로를 마일로 변환하는 머신 1/3 • 킬로미터 입력을 마일로 연산을 통해 계산해 주는 기계다 • 실제로 100km -> 62.137 mile 을 알고 있다. • 킬로와 마일은 선형Linear 관계가 있다. • 어떤 상수c 만큼 늘어나는 관계 !5 킬로 생각 어떤 연산으로? 마일 킬로 생각 상수 마일 0km 100km 0mile 62.137mile 신경망 첫걸음, 한빛미디어
  • 6. 킬로를 마일로 변환하는 머신 2/3 • 그럼 상수c는? • 임의Random 값 0.5를 대입해 보면? • 실제 값 62.137과 예측 값 50은 62.127-50 = 12.137 • 이것을 오차error라 한다. !6 킬로 생각 마일 킬로 생각 km x 0.5 마일 100km 50mile km x 0.5100km 50mile 62.127mile 실제 값 오차 12.137 신경망 첫걸음, 한빛미디어
  • 7. 킬로를 마일로 변환하는 머신 3/3 • 임의Random 값 증가하면 선형으로 결과도 증가한다는 것을 안다! • 두번째 시도로 c를 0.6으로 해보자 • 세번째 시도로 c를 0.7으로 해보자 - 값을 지나치는 Overshooting • 세 번의 시도로 0.7 보다 작고 0.6 보다 큰 값일 것이라 판단 • 오차가 줄고 더욱 실제에 가까와 진다 • 이런 기계를 예측자Predictor 라고 부른다 !7 킬로 생각 마일 킬로 생각 km x 0.6 마일 100km 60mile km x 0.50 km x 0.70 km x 0.61 100km 61mile 62.127mile 오차 1.137 실제에 조금 가까와 진다 km x 0.7 70mile 실제 값을 지나쳐: Overshooting 반복에 의한 학습!!! 신경망 첫걸음, 한빛미디어
  • 8. 킬로를 마일로 변환하는 머신 • 반복 Iteration • 개선해나간다 !8 입력 생각 예측 km x 0.50 km x 0.70 km x 0.61 100km 61mile 62.127mile 오차 1.137 반복에 의한 학습!!! 신경망 첫걸음, 한빛미디어 모델을 정하고 모델 수식화 모델 학습 모델 평가
  • 9. Ch2. 분류는 예측과 다르지 않다 • 측정된 무리를 분류해 보자 • 새로 발견되 것에 분류가 적용되나? 소녀 사진: https://pixabay.com/photo-774648/
  • 10. 곤충의 분포 • 곤충1 , 곤충2 들을 길이, 폭으로 묶어 그래프에 표시 • 예측자는 선형함수에 의존 • 선형함수는 입력에 대해 직선 형태를 출력 • 선형함수에서 매개변수인 c값을 조정해 직선의 기울기를 변환 시킬 수 있다. 길이 폭 기울기 함수를 써서 직선을 그 으면 두 무리의 분류Classfy 용도라 할 수 있다. 길이 폭 곤충1 곤충2
  • 11. 곤충의 분포 • 기울기를 조절해 다시 그어 본다 • 기울기를 조정해가며 분할자 Classifier를 발견했다고 가정하자. • 새로운 곤충 C가 발견되어 길이/폭을 측정해 그래프에 표시해 보자. • 곤충1, 2에 분할자로 분류가 되는가? 길이 폭 이 직선은 분할자길이 폭 길이 폭 분류에 직선이 최선? 다른 방법은?
  • 12. Ch3. 분류자 학습시키기 사진: https://pixabay.com/photo-1073638/ • 분류자를 학습시켜 분류가 가능하 게 하자 • Delta 값을 이해한다. • Moderator로서 L 값을 배운다
  • 13. 학습 데이터 • 예측에서 보았듯 현실 세계의 실제 데이터가 필요하다 • 이것은 예측자 또는 분류자에 실제 값을 알려주는 역할로 • 학습 데이터 Learning Data라고 한다 • 두 데이터를 그래프로 시각화 해보자 폭 길이 곤충 3.0 1.0 곤충1 1.0 3.0 곤충2 길이 폭3 곤충1 곤충23
  • 14. 직선의 방정식 • 분할선을 위한 직선의 방정식 • 첫번째 학습데이터 • A = 0.25 라 해보자 • 두 곤충 분류에 비적합 • 분류를 하려면 둘 사이를 가로지르는 기울기 값 필요 y = Ax y = Ax + B 에서 상수 B=0 이므로 직선은 원점을 지난다 길이 폭 y=0.25x 3 곤충 1 곤충 23 1 길이 폭 0.25↑ 필요 3 곤충1 곤충23 1
  • 15. 학습데이터 적용 • 둘 사이를 가르기 위해서는 기울기 값이 커야 하는 것을 알 수 있다. • 이런 일련의 방법을 알고리즘Algorithm 이라 한다. • 학습데이터를 함수에 적용해 보자 • A=0.25 가정에서 폭3.0 벌레 길이가 0.75로 예측. 실제 벌레 길이는 1.0이므로 차이가 발생 !15 길이 폭 0.25↑ 필요 3 곤충1 곤충23 1 반복적으로 높여가며 학습해야!!! - 알고리즘 구현 y = 0.25 ⋅ 3.0 = 0.75 길이 폭 y=0.75 y=1.0 3 3 1 오차 발생 신경망 첫걸음, 한빛미디어
  • 16. 오차 값 • 직선은 y=1.0 이라면 곤충A 위치 (3.0,1.0) 지나나서 분할선이 되지 못한다. • 목표를 y=1.1 삼아보자 • 오차 E 는 길이 폭 y=1.0 y=1.1 3 3 1 E = 목표값 - 계산값 = 1.1 - 0.75 = 0.35 길이 폭3 3 1 목료값 y=1.1 출력값 y=0.75 E = 0.35 오차를 줄여 정교하게 해야 한다 1.1이 근사치 같아 보인다.
  • 17. A와 E 관계 • 학습으로 오차E를 이용해 매개변수 A에 대해 알고자 한다. • A를 임의 초기값 주면 잘못된 y 를 얻는다. • 이런 목표에 근접한 값을 t라하자, t는 A값을 조금씩 조정하며 얻는다. • 수학에서는 조정해 가는 작은변화를 Δ (Delta)로 표기한다. • t를 Δ로 식을 바꿔 보면 y = Ax t = (A + ΔA)x 길이 폭3 3 1 E y = (A + ΔA)x y = Ax 오차를 통해 매개변수 A를 알아간다
  • 18. Delta A • E는 목표값t과 실제 값y의 차이 이므로 • 분류가 잘 되도록 기울기A를 다루므로 • 실제 A=0.25에서 E=0.35, x=3.0 이므로 델타A 아래 같다 ΔA = E x ΔA = E x = 0.35 3.0 = 0.1167 즉 A를 델타만큼 업데이트해야 한다
  • 19. 첫번째 학습 데이터 • 기울기 변화 식을 업데이트된A 라 하면 • 이 업데이트된A 를 y 식에 적용하면 • 이렇게 첫번째 학습데이터를 계산했다. y = (A + ΔA)x = 0.3667 ⋅ 3.0 = 1.1 A + ΔA = 0.25 + 0.1167 = 0.3667 실제 1.0에 근사해 졌다. 폭 길이 곤충 A+DeltaA y 3.0 1.0 곤충1 0.3667 1.1 1.0 3.0 곤충2 길이 폭 y=1.1 3 3 1
  • 20. 두번째 학습 데이터 • 두번째 학습데이터 곤충2는 (1.0, 3.0) 값이고,
 곤충1에서 찾은 업데이트한A를 적용하면 • 이제부터 두번째 학습데이터에 대한 오차 개선해 나가야 한다. • 먼저 학습 데이터 바로 밑 2.9 을 목표로 하자 3.0과 엄청난 차이가 난다 길이 폭 곤충2 (1,3) y=1.1 3 3 1 y = (A + ΔA)x = 0.3667 ⋅ 1.0 = 0.3667 길이 폭 목표값 2.9 y=1.1 3 3 1
  • 21. 두번째 학습 데이터-오차E • 두번째 학습데이터의 E는 곤충1 업데이트한 A와 차이므로 • 두번째 학습데이터의 업데이트된A 는, • 마지막으로 업데이트된A는 ΔA = E x = 2.5333 1.0 = 2.5333 E = 2.9 − 0.3667 = 2.5333 A + ΔA = 0.3667 + 2.5333 = 2.9 폭 길이 곤충 A+DeltaA y 3.0 1.0 곤충1 0.3667 1.1 1.0 3.0 곤충2 2.9 2.9
  • 22. 최종 업데이트한 분류 • 목표값을 기준으로 업데이트한 분류 직선은! 길이 폭 최종 y = 2.9x y=0.3667x 3 3 1 결과가 곤충1, 곤충2를 구분해 주진 않는다.
  • 23. Moderate • 학습데이터에 새 목표값을 정해 A를 정하는 것 보다 • 학습에 기반한 업데이트를 조금씩 조정 Moderate해 올라가는 방법이 머신러닝 의 핵심 개념이다 • 앞의 킬로->마일 학습에서 매개변수c 값을 조금씩 변경해 가던 것과 같은 개념이 다. • 길이 폭 최종 y = Ax 학습한 업데이트 y=0.3667x 조정1 조정2 3 3 1 델타 값을 조금씩 조정한다
  • 24. Moderate - 학습률 • 머신러닝에서 조정인자 L을 학습률 Learning Rate라고 하고 업데이트 방정식 을 아래 같이 쓸 수 있다. • 학습률 L을 제시하는 것은 조정이 없을 때 비해 L 만큼 갱신하겠다는 의미. • L=0.5로 주면 1/2 만큼 갱신하자는 의미. ΔA = L(E/x)
  • 25. 조정인자로 학습하기 • 조정인자 L을 임의로 L=0.5로 잡으면 • 첫번째 학습데이터:A=0.25, x=3.0, E=0.35 이고 • DeltaA = 0.5 (0.35/3.0) = 0.0583 • 업데이트된 A = 0.25+ 0.0583 = 0.3083 • y = 0.3083 * 3.0 = 0.9250 • 두번째 학습데이터는 업데이트된 A와 오차를 기반해 학습해 간다. • A=0.3083, x=1.0 • y = 0.3083 * 1.0 = 0.3083 • 오류E=2.9-0.3083=2.5917 (목표 A=2.9 였으므로 ) • DeltaA = 0.5 * (2.5917 / 1.0) = 1.2958 • 업데이트된A = 0.3083 + 1.2958 = 1.6042 • y = 1.6042 * 1.0 = 1.6042 최초 직선에 비해 위로 올라간 학습 결과를 보인다
  • 26. 조정인자 학습 결과 • 첫번째 학습데이터: • y = 0.3083 * 3.0 = 0.9250 • 두번째 학습데이터: • y = 1.6042 * 1.0 = 1.6042 길이 폭 y = (1.6042)x y=(0.9250)x 최초 직선 y=(0.25)x 3 3 1
  • 27. Ch5.여러 분류자 • 여러 선형분류자로 
 복잡한 문제 학습 https://pixabay.com/photo-3380192/
  • 28. 선형분류자와 논리 함수 • 불 논리 함수 • 데이터가 불 논리함수에 의해 좌우되는지 파악하는 선형 분류자를 생각해 보자 입력A 입력B 논리곱 논리합 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 입력1 생각 논리함수 입력2 출력
  • 29. 선형분류자와 논리곱/논리합 • 예를 들어 비가오고 AND 기온이 35도 이상이면 말라리아가 발병하나? • 혹은 둘 중 한 가지 조건 OR 조건이면 충족하나? • 논리 입력을 좌표로 표현했다. • y=Ax + b 선형함수가 논리함수를 학습할 수 있다. (0,1) 분할선 (0,0) (1,0) (1,1) 논리곱 (0,1) 분할선 (0,0) (1,0) (1,1) 논리합
  • 30. 배타적 논리합 XOR • 배타적논리합을 분류자로 표현해 보면 • 분류선 1개로 (0,1),(1,0) 을 구분할 수 없다 (0,1) 분할선 (0,0) (1,0) (1,1) XOR 입력A 입력B XOR 0 0 0 0 1 1 1 0 1 1 1 0 선형분류자는 한 직선으로 구분되지 않으면 소용없다.
  • 31. 여러개의 분류자 • 여러개 분류선으로 (0,1),(1,0) 을 구분한다. • 신경망에서 여러개의 분류자로 어떤 형태의 지역이라도 분류해 낼 수 있다. (0,1) 분할선 (0,0) (1,0) (1,1) XOR
  • 32. Ch6. 자연의 컴퓨터, 뉴런 • 뉴런 • 인공뉴런 • 분계점 • 계층과 가중치
  • 33. Neuron • 동물 뇌의 신비한 능력 - 먹이 찾기, 위험 회피 등 복잡한 일을 할 수 있다. • 초파리 10만개 뉴런 • 선충 302개 뉴런 • 뉴런 원리는 전기신호를 받아 전기신호를 출력한다. https://pixabay.com/photo-209371/ https://pixabay.com/photo-2022398/ 축삭 축삭말단 가지돌기
  • 34. 선형함수와 Neuron • 생물학적 뉴런은 선형함수 같은 출력을 만들지 않는다. • 뉴런 입력에 분계점Threshold 에 도달해야 출력이 발생된다.
  • 35. 활성화 함수 • 분계점을 넘어서는 경우 출력 신호를 생성하는 함수를 활성화 함수라 한다. • 입력이 작은 경우 출력이 0 • 분계점 이상되면 출력이 올라간다 • 수학적으로 다양한 활성화 함수가 있다. • 문제 결과가 직선을 잘 따르면 선형함수 • 보통 문제에서 2개를 분류할 때 Sigmoid 함수 • Sigmoid 보다 ReLU 와 변형된 활성화 함수를 사용한다. 출력 입력 분계점 3 3 1 계단함수 이런 분계점 반응응 뉴런과 유사 Fire
  • 36. Sigmoid Function • 시그모이드함수는 전통적으로 많이 쓰여와서 처음 진입시 적합하다. • 로지스틱Logistic 함수라고도 한다. • 실제 문제에 적용하기에는 문제가 있다. • 초월수 e=2.71828 입력 출력 https://en.wikipedia.org/wiki/Sigmoid_function y = 1 1 + e−x
  • 37. Gradient Vanishing 문제 • 시그모이드 함수는 Gradient Vanishing 문제가 있다. https://www.slideshare.net/jongyeolhyun/ss-79143299
  • 38. 인공 뉴런 • 생물학적 뉴런의 동작원리를 흉내내서 • 여러 입력을 더한다. 그 합을 시그모이드 입력으로 전달한다. • 합이 분계점 함수인 시그모이드 함수의 입력으로 전달된다. 입력a 시그모이드 함수 y(x) 입력c 출력 y 입력b 입력의 합
  • 39. • 뉴런은 직전-직후 뉴런들과 상호 연동 • 노드 간 연결 강도를 조정해가야 한다. 계층2 계층3 계층모델 입력 입력 입력 출력 계층1 1 1 2 2 3 2 3 1 3 뉴런 연결
  • 40. 가중치 • 뉴런간 연결의 신호 강도를 나타내는 가중치(weight)를 부여 • 아래는 모든 노드가 연결된 FC Full connected 사용. 계층2 계층3 입력 입력 입력 출력 계층1 1 1 2 2 3 2 3 1 3 w1,1 w1,2 w1,3 w2,1 w2,2 w2,3 w3,1 w3,2 w3,3 w1,1 w1,2 w1,3 w2,1 w2,2 w2,3 w3,1 w3,2 w3,3 가중치가 0에 가깝다면
  • 42. 2 계층 • 2계층의 신경망 신호를 따라가 살펴보자 • 입력계층은 값만 주어진다 • 계층의 노드 각각에 가중치가 주어졌다 계층2 1.0 0.5 출력 계층1 1 1 2 2 w1,1 = 0.9 w1,2 = 0.2 w2,1 = 0.3 w2,2 = 0.8 활성화 함수 적용 입력계층
  • 43. 계층2 노드1 • 활성화 함수는 가중치와 입력의 합이 입력된다. • 이제 x = (1.0*0.9)+(0.5*0.3) = 1.05 이므로 x = awa + bwb + cwc 입력의 합은 조합 combind라 부른다 y = 1 1 + e−1.05 = 1 1 + 0.3499 = 0.7408 계층2 1.0 0.5 출력 계층1 1 1 2 2 w1,1 = 0.9 w2,1 = 0.3 0.7408
  • 44. 계층2 노드2 • 이제 x = (1.0*0.2)+(0.5*0.8) = 0.6 이므로 • 앞으로 4계층, 8계층 그리고 노드가 수백개 있을 수 있다. • 이런 계산에 적합한 수학적 방법이 행렬Matrix이다. y = 1 1 + e−0.6 = 1 1 + 0.5488 = 0.6457 계층2 1.0 0.5 출력 계층1 1 1 2 2 w1,1 = 0.9 w2,1 = 0.3 0.7408 w1,2 = 0.2 w2,2 = 0.8 0.6457
  • 46. 행렬 • 스프레드시트 표 • 변수 • 각 괄호, 둥근 괄호에 행.열로 구성된 2x2 행렬
  • 47. 행렬 계산 • 행렬의 덧셈/뺄셈 • 행렬의 곱 : 열의 수와 행의 수가 일치해야 한다. https://datascienceschool.net/view-notebook/3f44cfdda2874080a9aa6b034c71d5ec/ 점곱 dot product, 내적 inner proudct
  • 48. 신경망 계층의 행렬 • 입력 행렬과 계층의 가중치를 행렬의 곱으로 연산한다. • 가중치 행렬곱 • 계층1 행렬곱은 계층2의 입력이 된다. 계층2 input1 input2 출력 O 계층1 1 1 2 2 w1,1 w1,2 w2,1 w2,2 Inputhidden = [ w11 w21 w12 w22] ⋅ [ input1 input2] = [ w11 ⋅ input1 + w21 ⋅ input2 w12 ⋅ input1 + w22 ⋅ input2]
  • 49. 신경망 계층의 행렬 • 계층1의 가중치 행렬곱은 계층2에 활성화 함수 입력 값 x로 전달된다. • 행렬을 축약해 표기하면 • 출력은 X = W ⋅ I O = sigmoid(X) x = (input1*w1,1) + (input2*w2,1) x = (input1*w1,2) + (input2*w2,2) 계층2 input1 input2 출력 O 계층1 1 1 2 2 w1,1 w1,2 w2,1 w2,2
  • 50. Ch9. 3계층 신경망 행렬곱 • 입력계층 입력 - 은닉 - 출력을 표현한 사진: https://flic.kr/p/5W8eeP
  • 51. 입력계층 • 각 계층은 입력 / 은닉 / 출력 계층으로 부른다 • 행렬로 계층의 입력을 표시할 수 있다. • 입력의 값은 행렬 I 로 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 w1,1 = 0.9 w1,2 = 0.2 w1,3 = 0.3 w2,1 = 0.3 w2,2 = 0.8 w2,3 w3,1 w3,2 w3,3 0.9 0.1 0.8 I = 0.9 0.1 0.8
  • 52. 은닉계층 입력 • 은닉계층 입력 는 행렬로 표현한다. • 결국 은닉계층의 입력은, I = 0.9 0.1 0.8 X = W ⋅ I Xhidden = Winput_hidden ⋅ I 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 w1,1 = 0.9 w1,2 = 0.3 w1,3 = 0.4 w2,1 = 0.2 w2,2 = 0.8 w2,3 = 0.2 w3,1 = 0.1 w3,2 = 0.5 w3,3 = 0.6 0.9 0.1 0.8 Whidden_output = 0.8 0.7 0.5 0.6 0.5 0.2 0.8 0.1 0.9 Winput_hidden = 0.9 0.2 0.1 0.3 0.8 0.5 0.4 0.2 0.6
  • 53. 은닉계층 입력 계산 • 은닉계층 입력 을 계산하면 • 이 값을 계층에 대입해 보면 Xhidden = Winput_hidden ⋅ I Xhidden = 0.9 0.2 0.1 0.3 0.8 0.5 0.4 0.2 0.6 ⋅ 0.9 0.1 0.8 = 1.16 0.42 0.62 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 1.16 0.42 0.62 0.9 0.1 0.8
  • 54. 은닉계층 출력 계산 • 은닉계층 출력은 • 활성함수를 통한 출력은, • 계층도 Ohidden = sigmoid(Xhidden) Ohidden = sigmoid 1.16 0.42 0.62 = 0.761 0.603 0.650 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 1.16 0.42 0.62 0.9 0.1 0.761 0.603 0.650 활성화 함수 0.8 은닉계층의 작업이 최종 출력계층 전까지 이루어 진다
  • 55. 출력계층 입력 • 출력계층 입력 는 행렬로 표현한다. • 은닉계층의 출력이 완성됐으므로, • 출력계층의 입력은, X = W ⋅ I Xoutput = Whidden_output ⋅ Ohidden I Ohidden 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 1.16 0.42 0.62 0.9 0.1 0.8 0.761 0.603 0.650 Xhidden
  • 56. 출력계층 입력 계산 • 출력계층 입력 을 계산하면 • 계층도에 표시해 보면, Xouput = Whidden_output ⋅ Ohidden Xoutput = 0.8 0.7 0.5 0.6 0.5 0.2 0.8 0.1 0.9 ⋅ 0.761 0.603 0.650 = 0.975 0.888 1.254 I Ohidden 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 1.16 0.42 0.62 0.9 0.1 0.8 0.761 0.603 0.650 Xhidden Xoutput 0.975 0.888 1.254
  • 57. 출력계층 출력 계산 • 은닉계층은 활성함수에 전달한다 • 활성함수를 통한 출력은, • 계층도에 표시해 보면, I Ohidden 입력 출력 은닉계층 출력계층입력계층 1 1 2 2 3 2 3 1 3 1.16 0.42 0.62 0.9 0.1 0.8 0.761 0.603 0.650 Xhidden Xoutput 0.975 0.888 1.254 앞 계층에서 마지막 까지 입력신호와 가중치를 조합 해 전달하는 방식을 전파법 이라고 한다. Ooutput = sigmoid(Xhidden) Ooutput = sigmoid 0.975 0.888 1.254 = 0.726 0.708 0.778 Ooutput 0.726 0.708 0.778
  • 58. Ch11.오차의 역전파 • Ch10~Ch12 오차의 역전파 https://en.wikipedia.org/wiki/Neural_backpropagation
  • 59. 전방전달과 역전파 • 전방전달 Feed-forward • 입력->은닉->출력층으로 예측값을 계산해 가는 과정 • 역전파 Back-Propagation • 출력값과 예측값의 오차를 줄이는 방향으로 역으로 계산해 가는 과정 입력 은닉계층입력계층 1 1 2 2 출력계층 1 2 출력 입력 은닉계층입력계층 1 1 2 2 출력계층 1 2 출력
  • 60. 여러 노드에 결과 오차E 전파 • 선형분류자는 기울기를 오차에 기반해 조정해 갔다. • 둘 관계는 단순 • 계층간의 관계에서 노드 결과가 오차에
 영향을 받으면 어떻게? • 가중치 하나에 오차를 적용하는 것은 의미가 없다. 노드에 여러 노드의 가중 치가 기여를 했기 때문. 입력 결과 값의 오차 출력계층입력계층 1 1 2 3 w1,1 = 0.9 w1,2 = 0.2 0.9 0.1 0.8 w3,1 = 0.2
  • 61. 오차를 균일하게 분배 1. 연결한 모든 노드에 균등하게 분배 - 일괄로 연결 수 만큼 균등하게
 전달한다. 2. 모든 노드에 차등을 두어 분배 - 가중치가 큰 노드에 큰 오차 반환 - 각 가중치가 가해진 영향에
 비례해서 되돌려 준다. E 1/3 입력 출력계층입력계층 1 1 2 3 w1,1 = 0.9 w1,2 = 0.2 0.9 0.1 0.8 w3,1 = 0.2 E 1/3 E 1/3 결과 값 의 오차 입력 출력계층입력계층 1 1 2 3 w1,1 = 0.9 w1,2 = 0.2 0.9 0.1 0.8 w3,1 = 0.2 E 1/4 E 2/4 결과 값 의 오차 E 2/4 Full Propagation Back Propagation 역전파
  • 62. 출력의 오차 역전파 두 출력 오차의 역전파는 각 입력 가중치에 비례해 전달한다. - 결과 값 오차 e1, e2는 학습데이터와 출력의 차이 이다. - 예) e1 = t1 - o1, e2 = t2 - o2 e1은 가중치 w11, w21 값에 비례해 나뉘고 e2는 가중치 w12, w22 값에 비례해 나누어 돌려주고 있다. 입력 출력계층입력계층 1 1 2 w1,1 = 0.9 w1,2 = 0.2 0.9 0.1 0.8 w2,1 = 0.2 결과 값의 오차 2 w2,2 = 0.4 e1 e2 O1 O2
  • 63. 오차의 역전파 표현 w11에 역전파되는 비례식 w22에 역전파되는 비례식 e1은 가중치 w11, w21 값에 비례해 나뉘고, e2는 가중치 w12, w22 값에 비례해 나 누어 돌려주고 있다. 예) w11=6, w21=3 이면: 6/6+3 = 2/3 - w11에 2/3 가 전달되고 나머지에 1/3이 전달된다. w11 w11 + w21 w12 w12 + w22
  • 64. 여러 계층으로 오차 역전파 입력/은닉/출력 계층으로 구성된 간단한 신경망에서 오차의 역전파를 고려해 보자. - 출력층 오류 - 은닉층 오차 가중치 - 은닉층 오류 - 입력층 오차 가중치 입력 은닉계층입력계층 1 1 2 2 eoutput 출력계층 1 2 whowih ehidden 역전파 eoutput who wih ehidden
  • 65. 은닉계층에서 오차? 출력 오차가 은닉계층 두 곳 가중치에 분배된다. - 이 분배되어 전파되는 오차를 재조합Recombine 해서 은닉계층 오차로 이용. 입력 은닉계층입력계층 1 1 2 2 eoutput1 출력계층 1 2 w11 wih ehidden1 eoutput2 w12 w21 w22 ehidden2 학습데이터는 최종 노드의 결과가 갖어야 할 목표 값에 대한 것. 결국 다 른 노드는 의미가 없다.
  • 66. 은닉계층 오차 수식 출력 오차를 재조합한 은닉층 연결노드 w11,w12로 나뉘어 전달되는 오차의 합 ehidden1 = eoutput1 ⋅ w11 w11 + w21 + eoutput2 ⋅ w12 w12 + w22 입력 은닉계층입력계층 1 1 2 2 eoutput1 출력계층 1 2 w11 wih ehidden1 eoutput2 w12 w21 w22
  • 67. 은닉계층 오차 계산 입력 은닉계층입력계층 1 1 2 2 e1 = 0.8 출력계층 1 2 w11 = 2.0 e1 = 0.42 w12 = 1.0 w21 = 3.0 w22 = 4.0 e2 = 0.5 e2 = 0.88 w11 = 3.0 w12 = 1.0 w21 = 2.0 w22 = 7.0 0.48 0.1 0.4 0.32 e1 = 0.32 + 0.1 = 0.42 e2 = 0.48 + 0.4 = 0.88 eoutput1 ⋅ w11 w11 + w21 = 0.8 ⋅ 2.0 2.0 + 3.0 = 0.32 eoutput2 ⋅ w12 w12 + w22 = 0.5 ⋅ 1.0 1.0 + 4.0 = 0.1
  • 68. 입력계층 오차 계산 입력 은닉계층입력계층 1 1 2 2 e1 = 0.8 출력계층 1 2 e1 = 0.42 e2 = 0.5 e2 = 0.88 w11 = 3.0 w12 = 1.0 w21 = 2.0 w22 = 7.0 e1 = 0.362 0.252 0.167 eoutput1 ⋅ w11 w11 + w21 = 0.42 ⋅ 3.0 3.0 + 2.0 = 0.252 eoutput2 ⋅ w12 w12 + w22 = 0.88 ⋅ 1.0 1.0 + 7.0 = 0.11 0.11 0.77 e1 = 0.252 + 0.11 = 0.362 e2 = 0.167 + 0.77 = 0.937 e1 = 0.937
  • 69. Ch13. 행렬곱 이용 오차역전파 • 오차의 역전파 행렬 • 역전파 행렬의 간소화 https://en.wikipedia.org/wiki/Matrix_multiplication
  • 70. 은닉계층 역전파 행렬곱 • 오차의 역전파를 행렬곱으로 벡터화 Vectorize 해보자, • 출력계층 오차 • 은닉계층 오차 (역전파한 오차) eoutput = [ e1 e2] ehidden = w11 w11 + w21 w12 w12 + w22 w21 w21 + w22 w22 w22 + w12 ⋅ [ e1 e2] Ch9 계층 행렬화 참조
  • 71. 오차의 역전파 흐름 • 역전파 행렬곱 • ehidden = w11 w11 + w21 w12 w12 + w22 w21 w21 + w22 w22 w22 + w12 ⋅ [ e1 e2] 입력 은닉계층입력계층 1 1 2 2 e1 출력계층 1 2 w11wih ehidden w12 w21 w22 e2
  • 72. 역전파 행렬의 간결화 • 가중치에 따라 오차를 분배하는데, 분모 부분은 일종의 정규화 인자 • 정규화 인자를 무시해도 오차의 일정 비율만 잃는다. • 가중치 만으로도 잘 동작한다. • 저자의 http://bit.ly/2m2z2YY 에 역전파 방법을 비교한 결과 참조 • 전파 가중치 행렬과 비슷해 보인다 • 역전파 행렬을 전치 Transpose하면 같은 모습이된다. • ehidden = [ w11 w12 w21 w22] ⋅ [ e1 e2] Inputhidden = [ w11 w21 w12 w22] ⋅ [ input1 input2] ehidden = [ w11 w12 w21 w22] ⋅ [ e1 e2] = [ w11 w21 w12 w22] T ⋅ [ e1 e2] 가중치 행렬을 전치하면?
  • 73. 오차의 역전파 행렬 ehidden = w11 w11 + w21 w12 w12 + w22 w21 w21 + w22 w22 w22 + w12 ⋅ [ e1 e2] ehidden = [ w11 w12 w21 w22] ⋅ [ e1 e2] ehidden = [ w11 w21 w12 w22] T ⋅ [ e1 e2] ehidden = WT hiddenouput ⋅ erroroutput
  • 74. Ch14. 가중치의 업데이트 • 오차와 가중치 업데이트 https://unsplash.com/photos/E3wehabi_B4
  • 75. 역전파 오차와 가중치 갱신? 역전파한 오차를 가중치에 어떻게 작용해 주나? 오차를 가중치에 적용 해야 한다!!! 입력 은닉계층입력계층 1 1 2 2 e1 = 0.8 출력계층 1 2 w11 = 2.0 e1 = 0.42 w12 = 1.0 w21 = 3.0 w22 = 4.0 e2 = 0.5 e2 = 0.88 w11 = 3.0 w12 = 1.0 w21 = 2.0 w22 = 7.0 e1 = 0.362 e2 = 0.932 0.32
  • 76. 가중치 계산은… 각 계층은 노드에 입력되는 신호에 가중치를 적용하고 합을 구한 후에 활성화 함수 를 작용시켜서 이의 합을 다음 계층 입력으로 제공하는 복합적인 방식이다. 망 안의 복잡한 가중치 조합으로 함수의 함수, 함수의 함수... 간단한 대수식으로 표현이 어렵다. 이런 문제에 봉착했을 때 - 그냥 추측으로 가중치를 선택하면? 입력 은닉계층입력계층 1 1 2 2 e1 = 0.8 출력계층 1 2 w11 = 2.0 e1 = 0.42 w12 = 1.0 w21 = 3.0 w22 = 4.0 e2 = 0.5 e2 = 0.88 w11 = 3.0 w12 = 1.0 w21 = 2.0 w22 = 7.0 e1 = 0.362 e2 = 0.932 0.32 무차별 대입
  • 77. 무차별 대입 • 무차별 대입Brute force • 예) 비밀번호를 알아내는데 순차적으로 대입해 알아내는 것을 익히 안다. • 가중치에 대입해 보면? • 각 가중치가 -1~1 사이 값이므로 1000가지 중 하나라고 가정해 보자 • 3개 노드 3개층이므로 18개 가중치가 있으므로 
 18,000개만 테스트 하면 된다. • 500개 노드라면? 3000개 가중치므로 30만개 • 한 조합을 테스트하는데 1초라면 208일 걸려야 한다. • 현실적으로 무차별대입은 어렵다.
  • 78. 경사 하강법 • 경사 하강법Gradient Descent는 최저점을 한단계씩 찾아 간다. • 함수가 너무 복잡해 대수학을 통해 찾기 어렵다면 경사하강법을 사용해 볼 수 있다. 다만 정답에 접근하는 방식이므로 해답을 얻지 못할 수 있다. • 다음 오차 함수 y가 있으면 y를 최소화하는 x를 찾는다면, • 위치에서 기울기에 따라 아래인지 위인지 파악 • x축으로 한 단계씩 이동해 최저점인지 알아 간다. x는 증가한다. • 반대로 양의 기울기에서는 x값이 감소한다. y = (x − 1)2 + 1 y = (x − 1)2 + 1 음(-) 기울기 다음 단계 y = (x − 1)2 + 1 다음 단계 양(+) 기울기 짧아진다
  • 79. 3차원 공간 경사하강법 • 많은 변수를 가진 다차원 함수 -> 3차원 공간 • 3차원 공간 함수도 경사하강법이 가능하다. • 3차원 공간의 계곡에 빠지는 상황도 있다 • 잘못된 최저점 : local minimum • 제대로된 최저점: global minimum • Local minimum을 피하기 위해 각기 다른 위치에서 출발해 최적화 한다. https://towardsdatascience.com/improving-vanilla-gradient-descent-f9d91031ab1d
  • 80. 오차함수-제곱오차 방식 • 신경망에 경사하강법을 사용하려면 적합한 오차함수Error function 필요 • 오차는 학습데이터와 결과의 차이므로 결과함수를 오차함수로 변환 가능 • 다음 표 세 가지 오차 후보를 살펴보자, • 제곱오차 방식 (목표-실제)^2 을 많이 선호 • 경사하강법의 기울기 구하는 대수학이 간단해진다 • 오차함수가 부드럽고 연속적이라 경사하강법에 잘 동작 • 최저점에 다다를 수록 경사가 점점 작아지므로 
 목표를 오버슈팅할 가능성이 낮다. 실제 결과 목표 값 오차(목표-실제) 오차|목표-실제| 오차(목포-실제)^2 0.4 0.5 0.1 0.1 0.0.1 0.8 0.7 -0.1 0.1 0.01 1.0 1.0 0 0 0 합: 0 0.2 0.002
  • 81. 미분으로 오차함수 구하기 • 경사하강법을 사용하려면 가중치에 대한 오차함수의 기울기를 구하는데 미분 Calculus이 필요하다. • 미분은 변화율을 구하는 것이다. 예를 들어 스프링에 힘을 얼마나 주느냐에 따라 스프링 길이가 어떻게 달라지냐는 것이다. • 오차는 가중치의 변화에 얼마나 민감한가? http://taewan.kim/post/cost_function_derivation/ 신경망에 수많은 가중치가 있다
  • 82. 미분으로 오차함수 구하기 • 미분으로 표현하는 오차의 가중치는 • 입력/은닉/출력 계층에서 • 은닉-출력의 오차함수 가중치 변화에 따라 오차 E가 얼마나 변하나? δE δwjk 입력 은닉계층입력계층 i=1 j=1 i=2 j=2 출력계층 k=1 k=2 wjk 노드오차 = 목표값 - 실제값 ok결과값, ex = tk − okwij xj xj δE δwjk = δ δwjk ⋅ ∑ n (tn − on)2 n개 노드에서 목표-실제값 을 제곱해 모두 더한 것
  • 83. 미분으로 오차함수 구하기 • 계층의 결과는 직전 층의 가중치만 영향을 받는다. • 오차함수 구할 때 합 기호가 필요가 없어진다. • 이전 층에 대해서 간단히 식을 쓸 수 있다. 입력 은닉계층입력계층 i=1 j=1 i=2 j=2 출력계층 k=1 k=2 wjk 노드오차 = 목표값 - 실제값 ok결과값, ex = tk − okwij xj xj δE δwjk = δ δwjk (tk − ok)2 결과는 Wjk 에 의해서만 영향을 받는다 은닉층 Xj는 Wij만 영향을 받는다
  • 84. 미분으로 오차함수 구하기 • 식을 바로 앞 가중치의 변화에 따른 출력 변화를 구할 수 있도록 • 연쇄법칙을 이용해 미분작업을 한다. • 먼저 첫번째 항에서 E는 알고 있듯이 므로 • 두번째 항에서 Ok는 노드k 결과 합으로, 입력 신호 가중치를 시그모이드 함 수를 적용한 것 • 시그모이드 함수를 미분하고 정리하면 마무리가 된다. δE δwjk = − 2(tk − ok)2 ⋅ δok δwjk δE δwjk = δE δok ⋅ δok δwjk E = (tk − ok)2 δE δwjk = − 2(tk − ok)2 ⋅ δ δwjk sigmoid( ∑ j wjkoj)
  • 85. 미분으로 오차함수 구하기 • 시그모이드 함수의 x에 대한 미분값은 • 시그모이드 함수 미분한 식은 간단하고 활용도 편리해 인기가 있다. • 결과를 정리하면 • 은닉층-출력층 가중치 업데이트에 대해서 간소화로 상수를 제거한 최종 수식 δE δwjk = − 2(tk − ok)2 ⋅ sigmoid( ∑ j wjk ⋅ oj)(1 − sigmoid( ∑ j wjk ⋅ oj)) ⋅ δ δwjk ( ∑ j wjk ⋅ oj) δ δwx sigmoid(x) = sigmoid(x)(1 − sigmoid(x)) = − 2(tk − ok)2 ⋅ sigmoid( ∑ j wjk ⋅ oj)(1 − sigmoid( ∑ j wjk ⋅ oj)) ⋅ oj δE δwjk = − (tk − ok) ⋅ sigmoid( ∑ j wjk ⋅ oj)(1 − sigmoid( ∑ j wjk ⋅ oj)) ⋅ ojsigmoid( ∑ j wjk ⋅ oj)sigmoid( ∑ j wjk ⋅ oj) 목표-실제 값 최종층 입력 신호 i_k 이전 은닉층 j의 결과
  • 86. 미분으로 오차함수 구하기 • 입력층-은닉층 가중치의 오차 기울기 • 첫번째 항: 은닉층에서 역전파 오류 • 두번째 항: 은닉층 노드 j로 들어오는 입력값 가중치 적용 결과 • 세번째 항: 입력층 출력 결과 ej ij oi δE δwij = − (ej) ⋅ sigmoid( ∑ i wij ⋅ oi)(1 − sigmoid( ∑ i wij ⋅ oi)) ⋅ oisigmoid( ∑ i wij ⋅ oi) sigmoid( ∑ i wij ⋅ oi)
  • 87. 학습률 • 가중치는 기울기와 반대 방향으로 진행된다 • 학습률 수식은 입력-은닉, 은닉-출력 사이 가중치에 동일하게 적용 • 학습률 인자를 적용해 변화의 정도를 조정한다. • 데이터에 나쁜 영향 줄이고, 오버슈팅등 방지 • 이 식은 갱신 새 가중치는 상수를 곱한 오차 기울기를 원래 가중치에서 빼줌. • 양의 기울기는 가중치를 줄이고 • 음의 기울기는 가중치를 늘이기 위함 • 상수 𝛼 는 학습률로 오버슈팅을 방지하고 변화의 강도 조정 • new wjk = old wjk − α δE δwjk 학습률은 문제에 따라 조금씩 다르게 튜팅해야 한다.
  • 88. 학습률 • 오차 기울기 수식을 계층 사이에서 경우에 따라 다르게 적용하면 된다. • 행렬식으로 계산을 풀어 보면 • 맨 뒤항은 직전 계층 Oj 의 전치행렬 • 가중치 업데이트 행렬을 표현하면 Δw1,1 Δw2,1 Δw3,1 ⋯ Δw1,2 Δw2,2 Δw3,2 ⋯ Δw1,3 Δw2,3 Δwj,k ⋯ ⋯ ⋯ ⋯ ⋯ = E1 ⋅ S1(1 − S1) E2 ⋅ S2(1 − S2) Ek ⋅ Sk(1 − Sk) ⋅ [O1 O2 Oj ⋯] 다음 계층에서 값들 이전 계층 j의 결과 학습률 생략 - 상수로 행렬곱 수 행하는데 영향을 주지 않는다 ΔWjk = α ⋅ Ek ⋅ Ok(1 − Ok) ⋅ OT j
  • 89. 15. 가중치 업데이트 예제 https://pixabay.com/photo-1181820/
  • 90. 가중치 업데이트 예제 • 아래 같이 은닉층 노드 값 O_j1, O_j2 를 가진 망이 있다. • 은닉-출력계층 사이 W11=2.0인 가중치를 업데이트 하려고 한다. • 오차기울기를 사용해서 가중치 W11을 업데이트 해보자 입력 은닉계층입력계층 1 1 2 2 e1 = 0.8 출력계층 1 2 w11 = 2.0 e1 = 0.42 w12 = 1.0 w21 = 3.0 w22 = 4.0 e2 = 0.5 e2 = 0.88 0.4 oj=2 = 0.5 oj=1 = 0.4 0.32 0.48 출력
  • 91. 오차 기울기 • 은닉-출력층의 오차기울기 • 첫째항: 는 오차 e1 이다. 그림에서 e1=0.8 이다. • 두번째 항: 시그모이드 내의 합 는 (2.0*0.4)+(3.0*0.5)=2.3 이다. • 그러면 시그모이드 함수 값은 는 0.909 • 0.909*(1-0.909)=0.083 이다. • 마지막 항: Oj는 j=1인 가중치 w11을 계산하므로 Oj1=0.4이다 • 이 세항을 계산하면 -(0.8*0.083*0.4) = -0.0265 가 된다. • 학습률이 0.1이라면 변화량은 0.1*-0.0265=-0.00265 • 새로운 W11=2.0-(-0.00265) = 2.00265 가 된다. • 작은 변화지만 수백, 수천번 반복해가며 가중치가 최적의 값으로 수렴한다. δE δwjk = − (tk − ok) ⋅ sigmoid( ∑ j wjk ⋅ oj)(1 − sigmoid( ∑ j wjk ⋅ oj)) ⋅ ojsigmoid( ∑ j wjk ⋅ oj)sigmoid( ∑ j wjk ⋅ oj) −(tk − ok) ∑ j wjk ⋅ oj 1/(1 + e− 2.3)
  • 93. 데이터 준비 • 신경망을 이용해 문제를 해결하기 위해서는, 올바른 학습 데이터를 제공해야 한 다. 그래서 학습데이터, 가중치 초기화, 결과 값을 잘 디자인 하는 것 만으로도 좋 은 신경망 학습 모델을 구성할 수 있다. • 시그모이드 함수에 큰 입력값이 입력되면, • 활셩화 함수는 평평한 형태를 가진다 • 입력 값, 결과 값 과 가중치 초기화를 위한 준비를 살펴본다. 0.5 0 x 1 y = 1 1 + e−x
  • 94. 입력 값 • 기울기를 이용해 가중치를 업데이트하므로 평평한 활성화 함수는 문제가 있다. • 가중치의 변화는 활성화함수 기울기에 따른다. • 작은 기울기는 곧 학습 능력에 제한된다는 의미 • 이것이 신경망에 포화Saturation 이 발생했다는 의미 • 포화가 안되게 입력값을 작게 유지해야 한다. • 입력신호 Oj 영향도 있어서 가중치를 작게 만들수도 없다. • 그래서 데이터의 범위를 0.0~1.0 사이에 놓이도록 정규화를 하는 것이다. • 때로는 입력값에 0.01 같이 작은 오프셋 값을 더해 입력이 0이 안되게 한다. • 입력이 0이면 Oj=0 이 되어 업데이트 수식 능력이 사라진다. δE δwjk = − (tk − ok) ⋅ sigmoid( ∑ j wjk ⋅ oj)(1 − sigmoid( ∑ j wjk ⋅ oj)) ⋅ oj
  • 95. 결과 값 • 최종 출력층에서 활성화 함수가 1.0 넘는 값을 못만들면 목표값 설정에 문제 • 로지스틱 함수는 0.0~1.0 사이의 값을 점근적Asymptotically으로 출력한다. • 불가능 영역 0.0, 1.0 설정을 막기 위해 0.01~0.99 사이를 이용하기도 한다 0.5 0 x 1 y = 1 1 + e−x 활성화함수가 도달할 수 없는 범위 활성화함수 범위: 0.0~1.0
  • 96. 가중치 초기화 • 가중치도 큰 값이 입력되면 포화가 되므로, 보통 초기화에 -1.0~1.0 사이의 임의 값으로 선택한다. • 과학자들이 특정 신경망의 형태와 활성화 함수가 주어졌을 때 수학적으로 가중 치의 임의 값을 경험적으로 알아냈다. • 노드로 오는 연결 노드의 개수에 루트를 씌운 역수를 취해 얻는 범위 • 예) 각 노드가 3개 연결노드가 있으면: • 각 노드가 100개 연결노드가 있으면: ±1/ 3 = ± 0.57 ±1/ 100 = ± 0.1
  • 97. A. 미분 • 손으로 구하는 미분 • 손으로 구하지 않는 미분 https://pin.it/nuozeufk55db4c
  • 98. 직선 • 표 데이터를 표현 • 속도를 s, 시간을 t 라고 하자 • 속도 식으로 표시하면 s=30 • 시간에 대한 변화율은 0므로 속도는 시간에 대해 의존관계가 없다. • 의존도 0 • 시간 경과에 따른 속도의 변화를 미분 수식으로 표현하면 미분이 만들어지기 까지 이해 시간(분) 속도(마일/시간) 0.0 30 0.5 30 1.0 30 1.5 30 2.0 30 2.5 30 변화를 파악하는 미분을 하는 것 δs δt = 0미분계수 derivarative 시간에 따른 변화가 없어 변화율을 0
  • 99. 경사를 가지는 직선 • 시속 30 마일에서 가속패달을 서서히 밟고 있는 차가 있다고 하자 • 속도의 수식으로 표현하면: speed = 30 + (10 * time) 기호로 표현하면 : s = 30 + 10t • 시간의 변화에 따른 속도의 변화는 어떻게 표현???
 속도는 매분 마다 10씩 변화하는 의존 관계가 성립한다. • 다음같은 변화의 의존식이 성립 시간(분) 속도(마일/시간) 0.0 30 0.5 35 1.0 40 1.5 45 2.0 50 2.5 55 3.0 60 기울기 10을 가진 1차함수 δs δt = 10
  • 100. 곡선 • 정지 상태에서 가속을 해서 서서히 속도가 오르는 차가 있다. • 매 분 시간의 제곱으로 데이터가 변화한다. • 방정식으로 표현하면 • 곡선에서 시간의 변화에 따른 속도의 변화는 어떻게 표현??? • 3분 - 9마일, 6분 - 36마일 … 시간(분) 속도(마일/시간) 0 0 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 s = t2
  • 101. 손으로 구하는 미분 • 다음 3분, 6분의 시점의 기울기를 비교하면, • 6분에서 기울기가 큰 것을 확인 가능하다. • 어느 시점 곡선의 기울기는 변화율이다. • 곡선 기울기는 해당 시점에 탄젠트라는 직선을 그어 주어 추정 할 수 있다. • 그 순간 기울기 • Δs/Δt = • 9.6/0.8 = 12.0 • 분당 시속 12.0마일 변화율 경사면 높이 Δs 길이Δt Delta는 작은 변화다 삼각형 크기를 자로 재서 계산해 보자
  • 102. 손으로 구하지 않는 미분 • t=3을 기준 2분 차이나는 t=1, t=5 에 직선을 그었다 • 수학적으로 2분의 Δx 를 가진다. • x를 사이에 x - Δx 와 x + Δx • x - Δx 와 x + Δx 사이 직선을 그어주면, 이 직선은 중간지점 x 에서의 탄젠트와 
 거의 동일한 기울기를 갖는다 • 곡선의 기울기와 비슷한 기울기를 가진다 (근사치) 경사면 높이 Δs 길이Δt x x+Δxx-Δx
  • 103. 손으로 구하지 않는 미분 • 이x - Δx 와 x + Δx 사이 직선의 기울기를 구해보자 • 기울기 = 높이/길이 • 높이: 속도의 차이므로
 1분에서 속도 1^2, 5분에서 속도 5^2 의 차이 이므로 24가 된다. • 길이는 시간 x - Δx 와 x + Δx의 차이 5-1=4가 된다. • 기울기는 24/4 = 6(mph/m) 이 된다. • 두 점 사이 직선의 기울기를 구하므로 아직 근사치이다. • Δx 를 더 작게 해서 촘촘하게 하면 어떨까? 경사면 높이 Δs 길이Δt x x+Δxx-Δx 아직까지는 근사치이다.
  • 104. 손으로 구하지 않는 미분 • Δx 를 더 작게 해서 촘촘하게 하면 어떨까? • 그림 같이 Δx를 작게 하면 t=3 위치에 가까와 진다. • Δx 를 작게 할 수록 실제 탄젠트와 점점 가까와 진다. • 수학에서 정답을 근사치로 잡고, 편차를 점점 작게 해가며 개선해가는 방법이 매 우 강력하다. 이 같이 직접적으로 공략이 어려운 문제를 정복해 왔다. 경사면 Δx = 0.1 Δx = 0.5 Δx = 1 Δx = 3
  • 105. 그래프 없이 하는 미분 • 앞의 탐구로 속도는 s = t^2 시간의 함수로 표현했다. • 시간의 함수가 속도에 어떻게 변화하는지를 기울기를 통해 살펴보았다. • 변화률을 식으로 정리하면 • 변화율: 높이/길이 • 높이: (t + Δx)^2 - (t - Δx)^2 • 길이: (t + Δx) - (t - Δx) = 2Δx • 풀어서 정리하면 • 앞의 근사치 구한 결과에서 • t=3 일때 변화율=6, t=6일 때 변화율=12 임을 확인했다. δs δt = Height Length = (t + Δx)2 − (t − Δx)2 2Δx δs δt = 4tΔx 2Δx = 2t 그러나 변화하는 Δ 가 상쇄되었다
  • 106. 그래프 없이 하는 미분 • 속도가 더 복잡한 • 변화률을 식으로 정리하면 • 높이 t + Δx에서 속도와 t - Δx의 차이 • • 길이: (t + Δx) 와 (t - Δx) 차이 • • 변화율 식으로 정리 δs δt = (t + Δx)2 + 2(t + Δx) − (t − Δx)2 + 2(t − Δx) 2Δx s = t2 + 2t (t + Δx)2 + 2(t + Δx) − (t − Δx)2 + 2(t − Δx) 2Δx = 4tΔx + 4Δx 2Δx = 2t + 2 여전히 변화하는 Δ 가 상쇄되었다
  • 107. 그래프 없이 하는 미분 • 속도를 시간의 세제곱으로 한다면, • 변화률을 식으로 정리하면 • 높이는 t + Δx에서 속도와 t - Δx의 차이 • 길이는 (t + Δx) 와 (t - Δx) 차이 • 변화율 식으로 정리 • Δx가 점점 작아져 무한히 작아져야 정확한 기울기를 구할 수 있다. • 무한히 작아지면 0에 가까와지고, 결과적으로 0이 된다. δs δt = (t + Δx)3 − (t − Δx)3 2Δx s = t3 (t + Δx)3 − (t − Δx)3 2Δx = 2t2 Δx + 2Δx3 2Δx = 3t2 + Δx2 Δ 가 포함되었다 δs δt = 3t2 + Δx2 = 3t2 미분을 통해 해답을 얻었다
  • 108. 패턴 • 여기까지 Δx 같은 델타로 미분계수를 구하는 것을 보았다. • t함수 미분계수는 같지만 t의 지수가 1씩 줄고 있다. • t^3은 t^2, t^2 은 t가 되고 있다. • 계수는 t는 t^1 이므로 t^0가 되어 1이 된다 • 3,4,5 같은 상수, a, b, c 같은 변수 상수도 변화율을 갖지 않으므로 사라진다. • t^2은 2t, t^3은 3t^2 이 된다. • 승수multiplier 이용 단계도 2t^5은 2*5t^4 = 10t^4 가 된다. • 패턴: δs δt = 2ts = t2 δs δt = 2t + 2s = t2 + 2t δs δt = 3t2 s = t3 y = axn δy δx = naxn−1 신경망에서 다항식의 미분 정도만 이해해도 좋다 도함수
  • 109. 함수의 함수 • 다음 같은 함수가 있다: • y는 다음 같다: • y의 변화에 따라 f의 변화: • 그러면 x의 변화에 따른 f는 어떻게 변할까? • 이렇게 쓸 수 없다: • 연쇄법칙Chain rule을 사용한다. • x변화로 식을 쓴다 • 신경망에서 역전파에서 연쇄법칙은 핵심중 핵심이다. f = y2 y = x3 + x δf δy = 2y f = (x3 + x)2 δf δx = 2(x3 + x) δf δx = δf δy ⋅ δy δx
  • 110. 함수의 함수 • 신경망 역전파에서 연쇄법칙Chain rule을 이용하면 각 계층을 한 층 한 층 풀 어 갈 수 있다. • 함수 와 에서 x의 변화에 따른 f의 변화를 구한다면 • 연쇄법칙으로 정리하면 • 두 부분을 정리하면 이므로 • 조합해 보면 인데, 이므로 x 식으로 표현할 수 있다. δf δx = δf δy ⋅ δy δx f = y2 y = x3 + x δf δy = 2y δy δx = 3x2 + 1 δf δx = (2y) ⋅ (3x2 + 1) y = x3 + x δf δx = (2(x3 + x)) ⋅ (3x2 + 1) = (2x3 + 2x) ⋅ (3x2 + 1)
  • 111. 함수의 함수 • 함수 상태에서 x의 변화에 따른 f의 변화를 구한다면 • 이런 방법으로 미분을 하면 동일한 결과를 얻는다. f = (x3 + x)2 = (2x3 + 2x) ⋅ (3x2 + 1) = 2 ⋅ (x3 + x)(3x2 + 1) f′ = 2 ⋅ (x3 + x)(x3 + x)′ = 2 ⋅ (x3 + x)(3x2 + 1)
  • 112. 함수의 함수 • 다른 독립변수를 처리하는 방법으로 다음 함수의 예를 들어 보면, • x, y ,z 은 독립적이다. 어떤 값도 가능, 다른 변수 값에 의존치 않는다. • 다른 변수의 변화에 영향을 받지 않는다. • 에서 y는 x 영향을 받는다. • 를 풀기 위해 두 부분으로 나눈다 • 2xy 를 x에 대해 미분하면 2y (y가 x에 독립적) • 3x^2z 를 미분하면 • 4z 은 x가 없으므로 상수로 취급되어 없어져 버린다. • 그러므로 • 독립적인 변수들은 과감히 무시, 복잡한 수식에 대해서도 미분을 수월하게 할 수 있다. 3x2 z = 2 ⋅ 3xz y = x3 + x δf δx = 2y + 6xz f = 2xy + 3x2 z + 4z δf δx