一、神经网络基础

2018-11-19  本文已影响0人  屉屉

typora-copy-images-to: ipic

一、神经网络基础

1.logistic回归

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

sigmoid函数:a=\frac{1}{1+e^{-z}}

sigmoid函数-7372818

2.logistic回归的损失函数

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

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

对于单个样本:loss(h_{\theta}(x),y) = -y_ilog(h_{\theta}(x)) - (1-y_i)log(1-h_{\theta}(x))

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

对于全部样本:J(w,b)=\frac{1}{m}\sum_{i=1}^mL(a^i,y^i)=-\frac{1}{m}\sum_{i=1}^m[y^iloga^i+(1-y^i)log(1-a^i)]

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

3.梯度下降法(Gradient Descent)

即minimize J(w,b)的方法。

沿着成本函数 J(w,b)下降最快的方向更新参数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。

上一篇下一篇

猜你喜欢

热点阅读