一、神经网络基础


typora-copy-images-to: ipic

一、神经网络基础

1.logistic回归

即使用sigmoid激活函数处理一个简单的神经网络 ,将其输出映射到区间(0,1)之间,方便做二分类。其中W、b为神经网络的两个参数矩阵。

sigmoid函数:

sigmoid函数-7372818

2.logistic回归的损失函数

定义一个凸函数(容易优化),来衡量预测值和真实值之前的差距,即衡量模型在训练样本上的表现。

在logistic常用对数损失函数衡量模型表现:

对于单个样本:

​ 衡量单个样本的预测准确性。

对于全部样本:

​ 衡量参数W、b的效果。

3.梯度下降法(Gradient Descent)

即minimize 的方法。

沿着成本函数 下降最快的方向更新参数W、b,以罩到全局最优解使得成本函数最小。

算法实现:

  • 初始化参数

  • 求当前位置损失函数的梯度(下降最快的方向、导数/偏导数)

  • 用步长(学习率)* 梯度确定下降的距离

  • 确定下降的距离是否小于阈值,判断是否需要继续

  • 更新参数

  • 确定更新参数后的损失函数是否小于阈值

4.导数(emmm...)

请兄弟姐妹们自行翻微积分课程。

即函数在某个点的变化率,是函数的一个局部性质。

5.计算图及其导数计算

计算图

即正向传播计算输出,反向传播计算导数的过程。

6.向量化

使用python的numpy库,消除代码中的显性for循环,让代码在大规模数据中的运算更加高效。

在神经网络的构建中,尽量避免使用for循环,以免影响计算效率。

Numpy文档:http://www.numpy.org

向量化的计算速度显著优于for循环,且随着数据量上升,优势会更加明显。

总之:尽量避免使用显性的for循环,向量化的计算会显著提醒计算速度。

但是在循环梯度下降时,目前还没有更好的办法代替for循环。

7.Python的广播

Numpy的Universal functions 中要求输入的数组shape是一致的,当数组的shape不想等的时候,则会使用广播机制,调整数组使得shape一样,满足规则,则可以运算,否则就出错。

广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度((trailing dimension,即从末尾开始算起的维度))的轴长相等,另外一种是有一方的长度为1。

你可能感兴趣的:(一、神经网络基础)