在m个样本上的梯度下降
- 先区分一下损失函数和代价函数的区别:损失函数是在单个样本上;代价函数是在多个样本上,是所有样本误差的平均,也就是损失函数的平均
- 梯度下降:
- 迭代公式是:w -= a*dJ(w,b)/dw
- 在多个样本中,采用for()循环来实现,第一个for循环来实现样本数的变化,第二个for循环来实现对w,b的迭代
向量化
- 向量化使得算法运行速度更快,来取代for()循环
- 本质就是将标量运算转换为向量运算
使用numpy时的技巧
- 尽量避免定义形状为(n)的向量,因为它既不是行向量也不是列向量,称为秩为1的输出组,会导致计算过程中出现奇怪的bug
- 如:a = np.random.randn(5)
神经网络计算详解
- 监督学习:用一组已知类别的样本调整分类器的参数,以达到所需的性能;简言之,就是输入x和y,调整w和b
- 神经网络表示
- 神经网络多输入计算输出的细节
1.在单个样本的计算中,我们可以用这样的图来表示输入层,隐藏层,输出层:
2.在多个样本的计算中,我们通常用下面的图来表示,但其实就是简单的单个样本的叠加(上标表示层数,下标表示第几个结点)
3.多输入计算的向量化(本质就是将其堆叠在矩阵里面)
注意:w矩阵为(4,3)是因为隐藏层有4个结点,传入隐藏层的有3个值,上述表达式写出了第一层网络的向量计算式,且最终结果就为a[1];第二层同理,如下
注意:当计算完隐藏层后,后面的计算相当于逻辑回归
4.因此,在多输入的计算中,用四行代码就可以实现
- 神经网络多实例计算的向量化
注意:a[2](i)中2表示第几层,i表示第几个实例
1.在多实例计算中,我们会将x堆叠成(n(x),m)的矩阵,m为实例数,n(x)为输入x数
2.在将输入X,Z,A都堆叠之后,我们得到的计算式如下: