深度学习笔记-第4章-《深度学习入门——基于Python的理论与实现》

这个书各位大佬都很熟悉,我就不多说了。这个系列的文章肯定不是很长,整个整合到
机器学习-笔记目录

深度学习笔记——《深度学习入门——基于Python的理论与实现》

第4章——神经网络的学习

e.g:机器学习中的特征是人为设定,而深度学习则不是。
红色为人参与,灰色无人参与

深度学习笔记-第4章-《深度学习入门——基于Python的理论与实现》_第1张图片

这个章节比较重点的地方,这里跟机器学习很类似的一个地方就是如何去衡量一个学习程度。
神经网络以某个指标去寻找最优权重参数,这就是损失函数,损失函数可以用任意函数,一般情况下用均方误差或者交叉熵

代码图1

跳过4.3的数值微分部分,直接说4.4的代码。
这节直接给了一个simplenet的例子,从例子来学习。这段会一步一步说。借助这个例子来谈4.3

实在找不到什么好工具来画这个图了,只能用CAD了,,原谅我。。。。
https://download.csdn.net/download/qq_42731466/10747534
上面的链接是图,需要补充或者扩展的自行下载。
深度学习笔记-第4章-《深度学习入门——基于Python的理论与实现》_第2张图片

因为这个代码不是一个文件,在多个文件里面跳转,这样清晰多了。。
主结构里面代码实际上只有三句,一句赋值分别是xt的接受初始信息和正确解的标签,第二句是类的调用第三句是计算梯度并返回。
.
1.代码在M块开始(Main),M触发了内部的一个类C1class1缩写),netsimpleNet实例化成为对象,并获得了.W属性。
2.labmda匿名函数这里只是申明。(注意:此时并没有调用net里面的方法)
3.numerical_gradient作为外部函数被调用,

3.1-进入外部模块F1,计算数值梯度,注意 np.nditer是个迭代器返回索引,执行次数就是矩阵的大小。它的进行就是分别对初始化.W的权重进行梯度计算。

3.1.1——计算至fxh1的时候触发flambda匿名函数,此时又触发C1,实例化的netloss方法被调用

3.1.1.1——计算至.predict调用自身的方法,xW进行矩阵乘法得到1X3的矩阵,赋值给z,此时得到的是接收的信息x和权重W的内积,意味3个神经元分别接收的信息总和。
3.1.1.2—— 触发外部函数F21softmax,对z采集的三组信息进行概率分配。注意:这里有一个技巧性处理
3.1.1.3—— 触发外部函数F22cross_entropy_error,如果接收的y矩阵维度是1则会触发reshape进行调整,调整为(1*t.size),成为一个2维矩阵,注意矩阵大小为2和维度大小为1X2是不同的维度。argmax()方法按行返回最大值对应的索引。最后计算并返回交叉熵给C1

3.1.2——计算至fxh2再次触发f3.1.1相同
3.1.3——grad[idx]计算的就是数值梯度,这里是一维,很方便。it.iternext()对索引进行一次递增,否则一种计算第一个索引对应值的梯度。

3.2——最后返回梯度值

4.显示结果
.
所以归根结底,这套代码就是计算梯度的。

总体而言,前面1,2步都是在做预处理,真正执行入口在F1,然后根据softmax返回概率矩阵,根据概率计算损失函数cross_entropy_error的梯度。返回梯度。

代码图2

深度学习笔记-第4章-《深度学习入门——基于Python的理论与实现》_第3张图片

问题
深度学习和机器学习的关系是什么?

补充:

P82-Q18,感知机收敛定理?如何理解“通过有限次数的学习,线性可分问题是可解的”?
P82-Q18,深度学习和机器学习的本质区别?
P83-Q19,在计算机视觉领域所说的特征量指的是什么?SIFT、SURF、HOG指的是什么?
P83-Q20,转化成向量使用SVM、KNN分类器是什么意思,分类器本身是什么意思?
P84-Q21,什么是过拟合?
P95-Q24,中心差分是如何减小误差的?

更新
2018.10.27. ——更新至109/119,还缺少一个代码图以及分析。

你可能感兴趣的:(深度学习,深度学习笔记)