1、实际变量有多少个特征,输入层就有多少个神经元,接下来想要得到多少个值那么隐藏层就有个神经元,以此类推
2、神经网络是一个无监督学习的过程么? 但是最后也算是和训练数据中的y做对比的啊,对无监督这个过程感到不理解
额,大概是这个过程,训练数据区别于标签数据,模型都需要训练数据来训练,但是标签数据就是做监督分类来用的
整个神经网络学习率是一样的吗,还是每层的一样
3、求导的数值化表示
神经网络的输入是一个矩阵,比如课程中讲到的识别数字的训练集,输入值是5000x400的矩阵,5000代表样本数量,400是输入层的特征值数量;输出值是一个500x1的矩阵
4、对于有多个参数theta的情况,可以看做是多维空间中,theta1、theta2、theta3......等是每一维,J值是对应的值,那么相应地每一维上的梯度或者叫导数(能叫做导数吧?!)
5、上述的数值表达式用matlab或者octave代码表述如下:
6、在神经网络中获得梯度是利用方向传播方法得到的误差,因为根据训练集,(xi 、yi)中,xi对应于神经网络的初始输入值,yi对应于输出值,误差函数或代价函数 J 的获取是在最后一层即输出层进行的。而各层中间的theta值是靠误差方向传播计算得到。
7、利用数值计算梯度实验梯度精度检验
why?!原因如下:
所以要用反向传播算法来计算D(1)、D(2)、D(3)
但是以上说法是建立在已经检验过反向传播算法和数值检验结果相差不大的条件下。
8、当运算梯度下降法或者高级算法时需要初始化theta值
在逻辑回归中所有theta值初始化为0是可行的,但是在神经网络中时不可行的
如果所有参数theta的初始值都为0,那么下图中所有蓝色的两个权重、红色的两个权重、绿色的两个权重将会一直相等。隐藏层的所有特征值也将相等,那么在计算下一层的输出值时这些其他相等的特征值完全是多余的或者没有意义的。
解决以上问题的方法就是将theta值随机初始化
图中红框中的在matlab中的实现的代码可以使得theta值在[-epsilon,epsilon]之间
下图说明初始化theta值时要打破对称性,不管是把所有theta值初始化为0还是初始化为不为零的值都没有做到这一点
9、神经网络的输入层神经元个数和特征个数相等,输出层神经元和分几类相等。
10、隐藏层数量以及隐藏层神经元个数的确定:一般情况下只要一个隐藏层,若隐藏层数量大于1,那么尽量使得每个隐藏层中的神经元个数相等,而且是数目越多效果越好,但是计算量会很大
11、会对每一个样本进行前向传播和反向传播
12、所有的theta参数表达神经网络如何有效拟合训练数据
总结暂时的理解:
(1) 、&(3) =[s1;s2] a(2) = [e1;e2;e3;e4;e5;e6;e7;e8;e9;e10]
所以梯度等于&(3)*a(2)'
下图中第二个选项是错误的,因为lamda的值不能不限地增加
(结果显示答案错误,why)
二次新知:
1、
实际是代价函数关于z(i)j的偏微分
什么时候去掉梯度检验的代码
神经网络是非凸函数,一般如何解决局部最优解的问题,a
总结:要记住
除了是相应代价函数关于中间项的偏导数,也可以由下式得到。
2、红框中是计算一个实例中的梯度中的偏导数项
下图中的第一个红框中的内容是计算梯度的累计值、第二个红框是计算梯度(当他theta是第一项时不要lambda,否则相反)