机器学习03-神经网络

news/2024/7/1 5:00:05

目录

一、非线性估值Non-Linear Hypothesis

二、神经网络建模 Neural Network

三、复习逻辑回归问题矩阵式

3.1 没有进行正则化

3.2 进行正则化

四、神经网络的代价函数

4.1 符号约定Notation

4.2 代价函数

五、反向传播算法 Backpropagation Alg

5.1 任务

5.2 一个训练样本

5.3 一个训练集

5.4 实现细节——随机初始化权重

5.5 实现细节——梯度检查

六、识别手写数字神经网络的实现过程

6.1 前项传播实现代价函数

6.2 前向传播+反向传播实现导数

6.3 实现随机初始化权重

6.4 实现sigmoid导数


复习Andrew Ng的课程Machine Learning,总结神经网络笔记一篇,涵盖课程week4、week5。

一、非线性估值Non-Linear Hypothesis

前面两篇博客讨论的技术——线性回归、逻辑回归,不管估值函数h_{\theta}(x)形式如何,参数与特征之间、特征各个维度之间的计算是都是线性的,也是\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+...+\theta _{n}x_{n}。这里面没有出现如x_{1}x_{2}这样非线性的项。非线性的估值特别困难,原因在于非线性的特征太多,增长的速度也太快。

举个例子,在图像分类问题中,分类是否是一个“汽车”。一张50×50分辨率的图像有2500个像素,这2500个像素就是2500个特征(如果是RGB图像,那么就是2500×3=7500个特征)。如果加上非线性,即使只加入二次方的非线性,特征数也会达到约300万个。

x_{i} x_{i}^{2} x_{i}x_{j}\quad i\neq j 特征总数
2500+2500+C_{2500}^{2}=3123750=3128750

如此巨大的数据量使得非线性估值特别困难。因此,要想办法——引入神经网络Neural Network。神经网络要从神经元与大脑 Neurons & Brains说起。这个算法就是模仿神经系统工作的方式,详情看图,顺便认识几个医学、生物学英语单词。dendrite 树突,也就是神经元的输入;nucleus 细胞核; axon 轴突,也就是神经元的输出;

模仿神经元,我们建立自己的逻辑单元。输入有x_{0},\ x_{1},\ x_{2},\ ...,\ x_{n},其中“bias unit”偏置单元也就是x_{0},由于恒等于1,这个可以不在图中画出来。

二、神经网络建模 Neural Network

Neural Network一般分为3类层次

  1. 输入层input layer;一般记作layer1;
  2. 隐(含)层hidden layer;可以有多层,一般记作layer2、layer3……
  3. 输出层output layer,视模型情况确定输出个数;最后一层layer

 约定符号Notation及推导

a_{i}^{(j)}="activation" of unit i in layer j .  第j层的第i个单元的激励

\Theta ^{(j)}=matrix of weights controlling function mapping from layer j to layer j+1. 从layer j映射到layer j+1的权重控制函数矩阵。

g(z)=\frac{1}{1+e^{-z}}

这个最简单的神经网络传播过程就是这样的

\begin{aligned} a_{1}^{(2)}&=g(\Theta _{10}^{(1)}x_{0}+\Theta _{11}^{(1)}x_{1}+\Theta _{12}^{(1)}x_{2}+\Theta _{13}^{(1)}x_{3})\\ a_{2}^{(2)}&=g(\Theta _{20}^{(1)}x_{0}+\Theta _{21}^{(1)}x_{1}+\Theta _{22}^{(1)}x_{2}+\Theta _{23}^{(1)}x_{3})\\ a_{3}^{(2)}&=g(\Theta _{30}^{(1)}x_{0}+\Theta _{31}^{(1)}x_{1}+\Theta _{32}^{(1)}x_{2}+\Theta _{33}^{(1)}x_{3})\\ \\ h_{\Theta }(x)&=a_{1}^{(3)}\\ &=g(\Theta _{10}^{(2)}a_{0}^{(2)}+\Theta _{11}^{(2)}a_{1}^{(2)}+\Theta _{12}^{(2)}a_{2}^{(2)}+\Theta _{13}^{(2)}a_{3}^{(2)}) \end{aligned}

If network has S_{j} units in layer j, S_{j+1} units in layer j+1, then \Theta ^{(j)}  will be dimension S_{j+1}\times (S_{j}+1).

如果网络中layer j有S_{j}个units,layer j+1有S_{j+1}个units,那么\Theta ^{(j)}将是一个S_{j+1}\times (S_{j}+1)维的矩阵。加了个1是因为每层都有偏置单元,偏置单元不是上一层的输出,但是得加上。比如上面推导的例子,网络第1层有3个单元,第2层有3个单元,那么\Theta ^{(1)}\in \mathbb{R}^{3\times 4}

神经网络的分层结构,每一层都是下一层的输入。通过精心选择每一层的参数,就能构造出复杂的特征组合,从而避免了用第一层输入获得大量非线性组合的弊端。分层后,每层都作为下一层的输入,是更好的特征选择!!

三、复习逻辑回归问题矩阵式

重新考虑上一节的推导过程,可以写成矩阵式。训练集的特征X,训练集的label是y,我们要求取的参数是\theta

y= \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ y^{(3)}\\ \vdots \\ y^{(m)} \end{bmatrix} \in \mathbb{R}^{m}  \theta =\begin{bmatrix} \theta_{0} \\ \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{n} \end{bmatrix}\in \mathbb{R}^{n+1}  x^{(i)}=\begin{bmatrix} x_{0}^{(i)} \\ x_{1}^{(i)} \\ x_{2}^{(i)} \\ \vdots \\ x_{n} ^{(i)}\end{bmatrix}\in \mathbb{R}^{n+1}

X=\begin{bmatrix} x_{0}^{(1)} &x_{1}^{(1)} &x_{2}^{(1)} &\cdots &x_{n}^{(1)} \\ x_{0}^{(2)} &x_{1}^{(2)} &x_{2}^{(2)} &\cdots &x_{n}^{(2)} \\ x_{0}^{(3)} &x_{1}^{(3)} &x_{2}^{(3)} &\cdots &x_{n}^{(3)} \\ \vdots &\vdots &\vdots &\ddots &\vdots \\ x_{0}^{(m)}&x_{1}^{(m)} &x_{2}^{(m)} & \cdots & x_{n}^{(m)} \end{bmatrix}= \begin{bmatrix} -x^{(1)T}-\\ -x^{(2)T}-\\ -x^{(3)T}-\\ \vdots\\ -x^{(m)T}- \end{bmatrix} \in \mathbb{R}^{m\times (n+1)}

3.1 没有进行正则化

\begin{aligned} g(z)&=\frac{1}{1+e^{-z}}\\ h&=g(X\theta )\\ E&=ones(size(h))\\ J&=\frac{1}{m}(-y^{T}\log (h)-(E-y)^{T}\log (E-h))\\ &=-\frac{1}{m}(y^{T}\log (h)+(E-y)^{T}\log (E-h))\\ grad&=\frac{1}{m}(X^{T}(h-y)) \end{aligned}

3.2 进行正则化

正则化要特别注意,不要对\theta _{0}进行正则化。在octave中下标从1开始,所以在处理\theta _{0}相关的项(比如grad(0))时都要表示相应向量的第一个分量,coding时应注意。

\begin{aligned} g(z)&=\frac{1}{1+e^{-z}}\\ h&=g(X\theta )\\ E&=ones(size(h))\\ J&=\frac{1}{m}(-y^{T}\log (h)-(E-y)^{T}\log (E-h))+\frac{\lambda }{2m}(\theta ^{T}\theta -\theta _{0}^{2})\\ &=-\frac{1}{m}(y^{T}\log (h)+(E-y)^{T}\log (E-h))+\frac{\lambda }{2m}(\theta ^{T}\theta -\theta _{0}^{2})\\ grad&=\frac{1}{m}(X^{T}(h-y))+\frac{\lambda }{m}\theta\\ grad(0)&=grad(0)-\frac{\lambda }{m}\theta_{0} \end{aligned}

四、神经网络的代价函数

4.1 符号约定Notation

L=total No. of layers in network. 神经网络中的层数。

S_{l}=No. of units(not counting bias unit) in layer l. 第l层中神经元的个数(不包括偏置单元)。

\begin{Bmatrix} (x^{(1)},y^{(1)}), &(x^{(2)},y^{(2)}), &\cdots , & (x^{(m)},y^{(m)}) \end{Bmatrix} 训练集,共m个训练样本。

我们的多分类问题的label换了一个形式,不再是标量,而是一个向量,每个维度=1代表一个分类。

y^{(i)}=\begin{bmatrix} 1\\ 0\\ \vdots\\ 0 \end{bmatrix} \quad \begin{bmatrix} 0\\ 1\\ \vdots\\ 0 \end{bmatrix} \quad \cdots \quad \begin{bmatrix} 0\\ 0\\ \vdots\\ 1 \end{bmatrix} \quad \in \mathbb{R}^{K}

4.2 代价函数

\begin{aligned} J(\Theta )= &-\frac{1}{m}\left [ \sum_{i=1}^{m}\sum_{k=1}^{K}y_{k}^{(i)}\log (h_{\Theta }(x^{(i)}))_{k}+(1-y_{k}^{(i)})\log (1-h_{\Theta }(x^{(i)})_{k}) \right ]\\ &+ \frac{\lambda }{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{S_{l}}\sum_{j=1}^{S_{l+1}}(\Theta _{ji}^{(l)})^{2} \end{aligned}\begin{aligned} J(\Theta)= &-\frac{1}{m}[\sum_{i=1}^{m}\sum_{k=1}^{K}y_{k}^{(i)}\log (h_{\Theta }(x^{(i)}))_{k}+(1-y_{k}^{(i)})\log (1-(h_{\Theta }(x^{(i)}))_{k})] \\ &+\frac{\lambda }{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{S_{l}}\sum_{j=1}^{S_{l+1}}(\Theta _{ji}^{(l)})^{2} \end{aligned}

其中,输出是一个向量y\in \mathbb{R}^{K}y_{k}^{(i)}表示该输出向量的第k个分量,h_{\Theta }(x^{(i)})_{k}表示估值的第k个分量。

第一项是适应代价函数,一个样本估值有k个分量,一个label有k个分量,先对k个分量偏差求和,再对m个样本求和。

第二项是正则化部分,是把每层矩阵的每个元素都平方求和。每个矩阵是S_{l+1}行,S_{l}列。再对L-1个矩阵求和。求和项中i从1开始计数,也就是不包括偏置单元的部分,也就是不包括\Theta _{j0}^{(l)}

五、反向传播算法 Backpropagation Alg

5.1 任务

和前面讨论过的技术一样,这次的任务是\min_{\Theta }J(\Theta )​​​​​​​,我们不断调整参数\Theta,使代价函数J(\Theta )最小(找到局部最优解)。为此,我们需要推导两个公式,以用于计算。

  • J(\Theta )
  • \frac{\partial }{\partial \Theta _{ji}^{(l)}}J(\Theta )​​​​​​​

5.2 一个训练样本

以上面这个网络为例,给出了一个训练样本(x,y),先计算forward propagation。

\begin{aligned} a^{(1)}&=x \quad (add\ a_{0}^{(1)}))\\ z^{(2)}&=\Theta ^{(1)}a^{(1)} \\ a^{(2)}&=g(z^{(2)})\quad(add\ a_{0}^{(2)}) \\ z^{(3)}&=\Theta ^{(2)}a^{(2)} \\ a^{(3)}&=g(z^{(3)})\quad(add\ a_{0}^{(3)}) \\ z^{(4)}&=\Theta ^{(3)}a^{(3)} \\ a^{(4)}&=h_{\Theta }(x)=g(z^{(4)}) \end{aligned}

再计算backpropagation。

Intuition: \delta_{j}^{(l)}="error" of node j in layer l.

For each output unit (layer L = 4) \delta_{j}^{(4)}=a_{j}^{(4)}-y_{j},向量化表达就是\delta^{(4)}=a^{(4)}-y

然后考虑其他隐藏层的输出误差。

注意到g^{'}(z^{(3)})=a^{(3)}$.*$(1-a^{(3)})g^{'}(z^{(2)})=a^{(2)}$.*$(1-a^{(2)})

注意到,(\Theta^{(3)})^{T}\delta^{(4)}g^{'}(z^{(3)})之间的维度不同,根据我们实现的方式不同,\Theta矩阵考虑了偏置单元而g函数没有考虑偏置单元,因此两者在维度上会有不同。我们在第六节里面举例具体说明。

\begin{aligned} \delta^{(3)}&=(\Theta^{(3)})^{T}\delta^{(4)}$.*$g^{'}(z^{(3)}) \\ \delta^{(2)}&=(\Theta^{(2)})^{T}\delta^{(3)}$.*$g^{'}(z^{(2)}) \end{aligned}

注意,不要计算 \delta^{(1)},因为layer1是输入,就是训练集里面的特征,不存在error。

5.3 一个训练集

这一部分给出了反向传播算法的实现过程,直接写英文了。由于Andrew Ng的PPT里面使用了两个i做索引,索引的内容又不一样,因此容易混淆。我们把对训练集的索引用大写字母Index来表示,这样就不会产生歧义了。

Traing Set \left \{ (x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}), \cdots , (x^{(m)},y^{(m)}) \right \}

Set \Delta_{ij}^{(l)}=0\quadfor\ all\ i,j,l

For Index=1\ to\ m

        Set a^{(1)}=x^{(Index)}

        Perform forward propagation to compute a^{(l)} for l=2,3,\cdots,L        Using y^{(Index)}, compute \delta^{(L)}=a^{(L)}-y^{(Index)}

        Compute \delta^{(L-1)},\delta^{(L-2)},\cdots,\delta^{(2)}

        \Delta_{ij}^{(l)}$:=$\Delta_{ij}^{(l)}+a_{j}^{(l)}\delta_{i}^{(l+1)}

\begin{aligned} D_{ij}^{(l)}&:=\frac{1}{m}\Delta_{ij}^{(l)}+\lambda \Theta_{ij}^{(l)} \quad if\ j\neq 0 \\ D_{ij}^{(l)}&:=\frac{1}{m}\Delta_{ij}^{(l)} \quad \quad \quad \quad if\ j=0 \end{aligned}\begin{aligned} D_{ij}^{(l)}&:=\frac{1}{m}\Delta _{ij}^{(l)}+\lambda \Theta _{ij}^{(l)} &if\ j&\neq 0 \\ D_{ij}^{(l)}&:=\frac{1}{m}\Delta _{ij}^{(l)} &if\ j&= 0 \end{aligned}

最终结论,\frac{\partial }{\partial \Theta _{ij}^{(l)}}J(\Theta )=D_{ij}^{(l)},由此得到代价函数的偏导数。

5.4 实现细节——随机初始化权重

与线性回归、逻辑回归的初始化权重不同,反向传播算法初始化权重一定不能全部初始化为0。

假如我们将权重\Theta^{(l)}的元素全部初始化为0,那么前向传播时,各个隐藏层神经元得到的输入和权重都是一样的,那么神经元的输出也都一样。反向传播时,各层的\delta^{(l)}也是一样的,这也就意味着经过梯度下降以后,各个参数的变化值也是一样的。如此反复,每个神经元的输出都一样,最后输出层得到的每个特征也都是一样的,这就阻碍了神经网络的学习。

解决这个问题的办法就是随机初始化权重。我们选取一个足够小量\epsilon_{init},让各层权重\Theta^{(l)}在区间[-\epsilon_{init},\epsilon_{init}]里面随机分布,这样权重足够小,学习的效率也更高。

选取\epsilon_{init}的方法是,确定第l层的映射矩阵大小S_{l+1}\times (S_{l} + 1),然后取\epsilon_{init}=\frac{\sqrt{6}}{S_{l+1}+S_{l}}

选取权重的方法是,随机生成[0,1]之间的随机数,随机数乘以2\epsilon_{init},再减去\epsilon_{init}\epsilon,这样随机数就会落在[-\epsilon_{init},\epsilon_{init}]

5.5 实现细节——梯度检查

反向传播算法异常复杂,实现起来容易产生bug。而且,即使出现bug,梯度下降看起来也是正常的,无法从收敛结果上直观发现这类bug。因此要想办法发现bug。这就是梯度检查。

回想逼近切线的方法,我们逐渐逼近得到切线的斜率。图太难画了,直接截图Andrew Ng的PPT。

这个方法,也是选取一个足够小量\epsilon(建议选择10^{-4}),计算J(\theta-\epsilon)J(\theta+\epsilon),再计算

\frac{J(\theta+\epsilon)-J(\theta-\epsilon)}{2\epsilon}

那么\frac{\partial }{\partial \theta }J(\theta )\approx \frac{J(\theta+\epsilon)-J(\theta-\epsilon)}{2\epsilon}

我们可以用\frac{J(\theta+\epsilon)-J(\theta-\epsilon)}{2\epsilon}来估计\frac{\partial }{\partial \theta }J(\theta )的大小,两者之间的差值应小于10^{-9}

六、识别手写数字神经网络的实现过程

6.1 前项传播实现代价函数

这一部分,描述了神经网络作业的实现过程——识别手写数字神经网络。

训练集有5000个训练样本。输入是20×20的灰度图像,并被拉成一个400×1的特征向量,label是一个数字,表示图像被识别成0~9里面的一个数字。为了方便octave的索引,我们将数字0映射到label数字10,数字0~9映射到label数字0~9。

X=\begin{bmatrix} -(x^{(1)})^{T}- \\ -(x^{(2)})^{T}- \\ \vdots \\ -(x^{(m)})^{T}- \end{bmatrix} \in \mathbb{R}^{5000\times 400} \quad y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{bmatrix} \in \mathbb{R}^{5000}

神经网络模型如图,有一个Input Layer,一个Hidden Layer,一个Output Layer。Hidden Layer有25个神经元。由此算来,加上偏置单元我们可以得到权重矩阵的维度。

\begin{aligned} \Theta ^{(1)}&\in \mathbb{R}^{25\times 401} \\ \Theta ^{(2)}&\in \mathbb{R}^{10\times 26} \end{aligned}

根据代价函数的定义,我们分两部分实现。

前项传播实现训练集的部分,注意

  • 添加各层的偏置单元
  • Label y的向量化

\begin{aligned} A^{(1)}&=X &(add\ A_{0}^{(1)})\quad A^{(1)}&\in \mathbb{R}^{5000\times 401}\\ Z^{(2)}&=A^{(1)}*(\Theta ^{(1)})^{T} &\quad Z^{(2)}&\in \mathbb{R}^{5000\times 25}\\ A^{(2)}&=g(Z^{(2)}) &(add\ A_{0}^{(2)})\quad A^{(2)}&\in \mathbb{R}^{5000\times 26}\\ Z^{(3)}&=A^{(2)}*(\Theta ^{(2)})^{T} &\quad Z^{(3)}&\in \mathbb{R}^{5000\times 10}\\ A^{(3)}&=g(Z^{(3)}) &\quad A^{(3)}&\in \mathbb{R}^{5000\times 10}\\ H &= A^{(3)} &\quad H &\in \mathbb{R}^{5000\times 10}\\ E &= ones(size(H)) &\quad E &\in \mathbb{R}^{5000\times 10}\\ Y_{vec} &= vectorize\quad y &\quad Y_{vec} &\in \mathbb{R}^{5000\times 10}\\ \end{aligned} \\ J = \frac{1}{m} \sum \sum -Y_{vec}$.*$log(H) -(E-Y_{vec})$.*$log(E-H)

实现正则化部分,注意权重\Theta ^{(1)}&\in \mathbb{R}^{25\times 401}\Theta ^{(2)}&\in \mathbb{R}^{10\times 26}都包含了偏置单元的权重,正则化部分不应该包含这一部分。可以将权重赋值给临时变量,再将偏置单元权重置0。

\begin{aligned} t_{1}&=\Theta ^{(1)} \ remove\ bias \quad &t_{1}&\in \mathbb{R}^{25\times 400}\\ t_{2}&=\Theta ^{(2)} \ remove\ bias \quad &t_{2}&\in \mathbb{R}^{10\times 25} \\ reg&=\frac{\lambda }{2m}(\sum \sum t_{1} .* t_{1} + \sum \sum t_{2} .* t_{2}) \end{aligned}

代价函数最终结果

J=J+reg

6.2 前向传播+反向传播实现导数

初始化\Delta

\begin{aligned} \Delta ^{(1)}&=zeros(size(\Theta^{(1)})) &\Delta ^{(1)}&\in \mathbb{R}^{25\times 401}\\ \Delta ^{(2)}&=zeros(size(\Theta^{(2)})) &\Delta ^{(2)}&\in \mathbb{R}^{10\times 26} \\ \end{aligned}

遍历训练集\left \{ (x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}), \cdots , (x^{(m)},y^{(m)}) \right \}所有的样本,对每个训练样本)进行前向传播,再反向传播求出\delta,再累加\Delta

\begin{aligned} y&=vectorize\ y &\quad y&\in \mathbb{R}^{10\times 1}\\ x&=vectorize\ x &\quad x&\in \mathbb{R}^{400\times 1}\\ a^{(1)}&=x &(add\ a_{0}^{(1)})\quad a^{(1)}&\in \mathbb{R}^{401\times 1}\\ z^{(2)}&=\Theta ^{(1)}a^{(1)} &\quad z^{(2)}&\in \mathbb{R}^{25\times 1}\\ a^{(2)}&=g(z^{(2)}) &(add\ a_{0}^{(2)})\quad a^{(2)}&\in \mathbb{R}^{26\times 1}\\ z^{(3)}&=\Theta ^{(2)}a^{(2)} &\quad z^{(3)}&\in \mathbb{R}^{10\times 1}\\ a^{(3)}&=g(z^{(3)}) &\quad a^{(3)}&\in \mathbb{R}^{10\times 1}\\ \\ \end{aligned}

\begin{aligned} \delta^{(3)}&=a^{(3)}-y &\quad \delta^{(3)}&\in \mathbb{R}^{10\times 1}\\ \delta^{(2)}&=(\Theta ^{(2)})^{T}\delta^{(3)} &(remove\ \delta_{0}^{(2)})\quad \delta^{(2)}&\in \mathbb{R}^{25\times 1}\\ \delta^{(2)}&=\delta^{(2)}$.*$g^{'}(z^{(2)}) &\quad \delta^{(2)}&\in \mathbb{R}^{25\times 1}\\ \end{aligned}

\begin{aligned} \Delta^{(2)}&=\Delta^{(2)}+\delta ^{3} (a^{(2)})^{T} &\quad \Delta^{(2)}&\in \mathbb{R}^{10\times 26}\\ \Delta^{(1)}&=\Delta^{(1)}+\delta ^{2} (a^{(1)})^{T} &\quad \Delta^{(1)}&\in \mathbb{R}^{25\times 401}\\ \end{aligned}

将累加后的\Delta除以训练集的大小m,得到D。注意,这一步骤是在遍历训练集之后的操作。

\begin{aligned} D^{(1)}&=\frac{1}{m}\Delta ^{(1)} &D^{(1)}&\in \mathbb{R}^{25\times 401}\\ D^{(2)}&=\frac{1}{m}\Delta ^{(2)} &D^{(2)}&\in \mathbb{R}^{10\times 26}\\ \end{aligned}

正则化部分,注意正则化部分不包括偏置单元。

\begin{aligned} D_{reg}^{(1)}&=\frac{\lambda }{m}\Theta^{(1)} &D_{reg}^{(1)}&\in \mathbb{R}^{25\times 401}\\ D_{reg}^{(2)}&=\frac{\lambda }{m}\Theta^{(2)} &D_{reg}^{(2)}&\in \mathbb{R}^{10\times 26}\\ D_{reg}^{(1)}&=set\ 1^{th}\ column\ 0 &D_{reg}^{(1)}&\in \mathbb{R}^{25\times 401}\\ D_{reg}^{(2)}&=set\ 1^{th}\ column\ 0 &D_{reg}^{(2)}&\in \mathbb{R}^{10\times 26}\\ \end{aligned}

导数最终结果

\begin{aligned} D^{(1)}&=D^{(1)}+D_{reg}^{(1)} &D^{(1)}&\in \mathbb{R}^{25\times 401}\\ D^{(2)}&=D^{(2)}+D_{reg}^{(2)} &D^{(2)}&\in \mathbb{R}^{10\times 26}\\ \end{aligned}

6.3 实现随机初始化权重

这一部分的实现相对简单,参看 5.4 实现细节——随机初始化权重。

6.4 实现sigmoid导数

注意sigmoid的导数具有这样的性质,g^{'}(z)=g(z)(1-g(z))


http://lihuaxi.xjx100.cn/news/236040.html

相关文章

数据结构-栈与队列

栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表 我们把允许插入和删除的一端称为栈顶 (top) ,另一端称为栈底 (bottom) ,不含任何数据元素的栈称为空栈。 栈又称为后进先出 (Last In Filrst Out) 的线性表,简称LIFO结构。 理解栈的定义…

法院判决:优步无罪,无人车安全员可能面临过失杀人控诉

据路透社报道,负责优步无人车在亚利桑那州致人死亡事件调查的律师事务所发布公开信宣布,优步在事故中“不承担刑事责任”,但是当时在车上的安全员Rafaela Vasquez要接受进一步调查,可能面临车辆过失杀人罪指控。2018年3月&#xf…

【转载】pycharm远程调试配置

pycharm远程调试配置https://www.cnblogs.com/liangjiongyao/p/8794324.html

当移动数据分析需求遇到Quick BI

我叫洞幺,是一名大型婚恋网站“我在这等你”的资深老员工,虽然在公司五六年,还在一线搬砖。“我在这等你”成立15年,目前积累注册用户高达2亿多,在我们网站成功牵手的用户达2千多万。目前我们的公司在CEO的英名带领下&…

Magento开发的特点有哪些?

Magento是一套专业开源的电子商务系统,也是目前主流的外贸网站购物系统,都是居于PHP语言开发的,数据库使用的是Mysql,且浏览界面很适合欧美用户的使用习惯。Magento开发设计得非常灵活,具有模块化架构体系和丰富的功能…

CV01-语义分割笔记和两个模型VGG ResNet的笔记

目录 一、语义分割 二、VGG模型 2.1 VGG特征提取部分 2.2 VGG图像分类部分 三、ResNet模型 3.1 为什么是ResNet 3.2 11卷积调整channel维度大小 3.3 ResNet里的BottleNeck 3.4 Global Average Pooling 全局平均池化 3.5 Batch Normalization 学习语义分割理论&#x…

发票拍照识别OCR

发票拍照识别系统还可与政府、企事业单位、工商等多个行业的业务流程系统无缝结合,辅助办公人员进行发票等单据的信息录入,提高资料电子化、数据格式化的效率。 那么发票拍照识别系统有哪些技术特点呢? 1、中安发票拍照识别系统支持安卓andro…

基于Pygame写的翻译方法

发布时间:2018-11-01技术:pygameeasygui概述 实现一个翻译功能,中英文的互相转换。并可以播放翻译后的内容。 翻译接口调用的是百度翻译的api接口。详细 代码下载:http://www.demodashi.com/demo/14326.html 一、需求分析 使用pyg…