DeepLearing学習ノート-Sigmoid関数の勾配
2736 ワード
背景:
Z=を解くσ(z)の勾配はsigmoid(x)=11+e−xがpythonで
対応する導関数を求めます
sigmoid_derivative(x)=σ′(x)=σ(x)(1−σ(x))(1)
これはどうやって導いたのでしょうか?
σ(x)=11+e−x
一時変数を追加
t=1+e−xは,複合関数の導出法則により,
σ′(x)=(t−1)′⋅t′=−t−2⋅(−e−x)=1(1+e−x)2⋅e−x=11+e−x(e−x1+e−x)=11+e−x(1+e−x−11+e−x)=11+e−x(1−11+e−x)=σ(x)⋅(1−σ(x))
証拠を得る!
python実装
出力結果:
Z=を解くσ(z)の勾配はsigmoid(x)=11+e−xがpythonで
numpy
モジュールを用いて実現されるためである.# GRADED FUNCTION: sigmoid
import numpy as np
# this means you can access numpy functions by writing np.function() instead of numpy.function()
def sigmoid(x):
"""
Compute the sigmoid of x
Arguments:
x -- A scalar or numpy array of any size
Return:
s -- sigmoid(x)
"""
### START CODE HERE ### (≈ 1 line of code)
s = None
s = 1/(1+np.exp(-x))
### END CODE HERE ###
return s
対応する導関数を求めます
sigmoid_derivative(x)=σ′(x)=σ(x)(1−σ(x))(1)
これはどうやって導いたのでしょうか?
σ(x)=11+e−x
一時変数を追加
t=1+e−xは,複合関数の導出法則により,
σ′(x)=(t−1)′⋅t′=−t−2⋅(−e−x)=1(1+e−x)2⋅e−x=11+e−x(e−x1+e−x)=11+e−x(1+e−x−11+e−x)=11+e−x(1−11+e−x)=σ(x)⋅(1−σ(x))
証拠を得る!
python実装
def sigmoid_derivative(x):
"""
Compute the gradient (also called the slope or derivative) of the sigmoid function with respect to its input x.
You can store the output of the sigmoid function into variables and then use it to calculate the gradient.
Arguments:
x -- A scalar or numpy array
Return:
ds -- Your computed gradient.
"""
### START CODE HERE ### (≈ 2 lines of code)
s = 1 / ( 1 + 1 / np.exp(x))
ds = s * (1 - s)
### END CODE HERE ###
return ds
x = np.array([1, 2, 3])
print ("sigmoid_derivative(x) = " + str(sigmoid_derivative(x)))
出力結果:
sigmoid_derivative(x) = [ 0.19661193 0.10499359 0.04517666]