人工神经网络ANN的一些概念的集合

来源:互联网 发布:pc版电视直播软件 编辑:程序博客网 时间:2024/06/08 03:41

神经网络,学生时,特意修了这门课,但完全找不到感觉,内容基本不理解,实验无头绪。经历了一些项目实践,现在回头再理解NN,一些概念自然就理解了。

1. 

单层神经网络:
输入
输出
激活函数: 非线性,就是指这个激活函数。z是各输入数据与系数的加权和,a是输出。
权值系数w,与输入仍然成线性关系


多层神经网络
表象的概念:
输入层
输出层
隐藏层
----
权值:也扩展至二维w(i, j)


根据传播形式:
前向传播
前馈网络: 无闭环
反向传导算法: 如何求解神经网络。  训练,  识别。


2. 

一个重要概念:  梯度下降算法 --> 批量梯度下降算法

cost function: 代价函数,即 计算值与真实值的差异。一般用均方差表示。

代价函数的概念极其重要,因为它是进行分类和回归的中心。代价函数就是衡量 参数w和b依据。 代价函数越小,那么计算出的参数w,b就越好。


我们的目标: 针对w,b;求代价函数的最小值。


代价函数除了均方差的概念,为防止过度拟合,还需增加一个 规则化项(也叫权重衰减项),以减小权重的幅度。
又一个概念:
过度拟合overfitting: 有什么现象,后果? 就是训练时,数据噪声太大,拟合出来的模型,不能满足实际的数据应用。就是拟合失败,训练失败。模型能适用训练数据,不适合一般的数据。
解决方法: 对神经网络,增加权重衰减项; 对决策树,依据一定规则修剪树。


3. 

如何求w,b,让代价函数cost function有一个最小值?

采用训练的方式,重复计算,并保证w,b能收敛。这就是机器学习。

1). w,b初始化为一个值。一般初始化为一个很小的、接近为0的随机值,如正态分布N(0, 0.01)。(为什么?) 

如果将所有系数都初始化为0,则对于隐藏层,所有的输入值都相同。随机,就是使对称失效。(这个就是那么个意思,解释起来太拗口)。初始化系数都为0.任何输入 相乘后,激活函数的输入都等于b,偏置项。

2). 取输入,输出对(x,y)

3). 然后利用梯度下降算法。计算最优的w,b。

相同的输入、输出,只需要不停的更新w,b即可。


4). 最后考虑局部解与全局最优解的问题。


4. 

概念: 梯度下降算法。 最优化中的基本算法之一。又称最速下降法。 沿负梯度方向下降最快。一种简单的形式:x(k+1)=x(k)-a*g(k),g(k)为梯度方向,a是一个学习系数。

求cost function的负梯度方向。求各方向的偏导,相加,求模,相除。

带入此点系数w,b,x,y。即可求出此点的具体的梯度方向。


最后,如何求偏导。神经网络的cost function只是个概念,只有象形的公式,没有具体的公式。所以,无法利用直接的公式进行求导。


1) 前向传播,计算所有节点的激活值

2)反向传播,计算所有节点的残差

3)利用残差,更新偏导数dw, db



这里又推出一种算法: 反向传播算法。用于计算偏导d(w,b)/ d(w),   d(w, b) / d(b)。


两个关键的概念: 残差、反向求残差


5.

这里又提出一个概念:残差。

残差:每个节点都有残差值,其表明了每个节点对最终输出值(即 代价函数、最终方差值)的影响。

最终输出节点的残差是 代价函数 在此节点的求导,获取其对 代价函数的影响值 。

经推导,此残差就是 激活函数的输出值 与 实际值之差,再乘以 激活函数的导数值。

对二阶函数的求导,就是一阶函数,乘以此激活函数的导数。


对于输出值与实际值之间的差值,可以理解为偏差,

\begin{align}\delta^{(n_l)}_i= \frac{\partial}{\partial z^{(n_l)}_i} \;\;        \frac{1}{2} \left\|y - h_{W,b}(x)\right\|^2 = - (y_i - a^{(n_l)}_i) \cdot f'(z^{(n_l)}_i)\end{align}


对于隐藏单元的残差: 即隐藏单元 对 总的代价函数的影响。

求导,推导出 前后两个单元间的影响。


前后两个单元的影响,就是权值,加上激活函数的影响。

一次计算时, 权值是常数。 激活函数的一阶导数。


利用反向传播的形式,由最后一层,逐步向第一层的方向推导。

 \delta^{(l)}_i = \left( \sum_{j=1}^{s_{l+1}} W^{(l)}_{ji} \delta^{(l+1)}_j \right) f'(z^{(l)}_i)

不仅要求出 当前层的 激活值的导数,还要计算出一个加权平均值,是第l+1层所有残差对上一层第i个节点的残差的影响。这个需要好好理解,多看看推导是有好处的。


计算出残差后,就能计算所谓的偏导数了。

 \begin{align}\frac{\partial}{\partial W_{ij}^{(l)}} J(W,b; x, y) &= a^{(l)}_j \delta_i^{(l+1)} \\\frac{\partial}{\partial b_{i}^{(l)}} J(W,b; x, y) &= \delta_i^{(l+1)}.\end{align}

第l层,第i个节点,j的含义是第l+1的数据。。。 这个要好好理解。

就是所谓的反向传播算法了。实际上是,反向求偏导数的一种算法。


以上是前馈神经网络在有监督学习中的应用。


7.

opencv中提供了CvANN_MLP类来实现 NN 算法。

CvANN_MLP首先会指定 MLP的拓扑结构和激活函数:

层数:包括输入、隐藏、输出各层的数目。一般是一个一维矩阵。

激活函数: 默认是双曲正切函数


训练:

拿到输入和结果数据后,就能进行训练参数的设置了。

CvANN_MLP_TrainParameter包括了算法的种类选择,反向传播算法back_prop,还是rprop算法,及其他们的主要参数。

而且,需要设定算法运行的最大迭代次数,和误差截止值(相邻两次迭代误差之差)

执行训练函数。MLP相对收敛较慢,不过结果较好。结束后,MLP就训练好了。


剩下的就是分类了。predict函数,就能拿到结果了。


8.

对于神经网络,有监督学习是首先拿到训练数据的分类标签的。而对于无监督学习,是无法拿到分类标签的。

只能自学习,进行聚类。自编码神经网络就是满足这种需求。

目的:发现输入数据的自身的一些特征,或一些结构,或一些相关性。

输入数据的压缩表示:相当于降维表示;与PCA有点类似。

稀疏性限制:假设sigmoid函数是激活函数,那么输出结果接近1,表示被激活,输出结果接近0,表示被抑制。当神经元大部分处于抑制状态,就称为对神经元的稀疏性限制。 ps: 使用tanh作为激活函数,当神经元输出接近-1的时候,神经元是被抑制的。

所以,神经元的激活度的表示很重要。

9.

一般会求出神经元 的 平均活跃度。

稀疏性参数,就是专门指定 神经元的平均活跃度的标准值。一般是一个比较小的值,如0.05.为了达到这一目标,需要对优化函数加入一个惩罚因子。

这个惩罚因子会随着,平均活跃度和稀疏参数的差值变大而单调递增。当两者相等时,惩罚因子也为0。一般惩罚因子选择用以下函数

 \begin{align}\sum_{j=1}^{s_2} {\rm KL}(\rho || \hat\rho_j),\end{align} 其中 \textstyle {\rm KL}(\rho || \hat\rho_j) = \rho \log \frac{\rho}{\hat\rho_j} + (1-\rho) \log \frac{1-\rho}{1-\hat\rho_j} 就是 稀疏性参数与神经元平均活跃度的 相对熵


而 总体代价函数就可以表示为:

\begin{align}J_{\rm sparse}(W,b) = J(W,b) + \beta \sum_{j=1}^{s_2} {\rm KL}(\rho || \hat\rho_j),\end{align}

直接跳到这一步,很难理解。 因为J 值如何计算? 因为选用的是恒等式 f = x,那么目标值与输入值相等,代价函数应该是与w, b密切相关,KL函数也是间接与w,b相关的。

仍然是,反向传播算法,只不过增加了一个 相对熵的 求导运算。

\begin{align}\delta^{(2)}_i = \left( \sum_{j=1}^{s_{2}} W^{(2)}_{ji} \delta^{(3)}_j \right) f'(z^{(2)}_i),\end{align}

\begin{align}\delta^{(2)}_i =  \left( \left( \sum_{j=1}^{s_{2}} W^{(2)}_{ji} \delta^{(3)}_j \right)+ \beta \left( - \frac{\rho}{\hat\rho_i} + \frac{1-\rho}{1-\hat\rho_i} \right) \right) f'(z^{(2)}_i) .\end{align}
就这样了。理论理解还是需要一个接受的过程的(慢慢理解吧)。

更一步学习的概念:

稀疏编码。


理论概念过了一遍,其效果如何哪?

这个无监督的神经网络,学习了一番之后,有什么能力那?

可视化每个训练好的隐藏单元。每个隐藏单元对应一幅图像。

10.

这里涉及到概念:

范数:一种实值函数。有1, 2, 无穷阶的形式。 1阶对应 绝对值,二阶对应 模,无穷 对应最大值。

最大激励:输出值比较大

平凡解:无意义的解,如线性Ax = 0,解是x=0.即0解


以上的概念都来自:

http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B

以及opencv手册


MAP: 极大后验估计,与贝叶斯规则化 相关。 贝叶斯规则化 将高斯先验概率 引入参数中,计算MAP估计。(需扩展学习: 贝叶斯 规则化)

对应的概念: 极大似然估计。


激活函数选择,线性,还是非线性函数?

如果是线性,等于连续的向量/矩阵相乘,得出的结果仍然是一个矩阵/向量。而其他表达,如一些二元结构的东西,用线性是无法直接表达的。这是线性的缺陷。

对于二元结构的表达,应用非线性函数,如双曲正切函数,就能较好的表达二元结构。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑版酷狗字体模糊怎么办 酷我切歌怎么办 快手暂不支持音乐格式怎么办 上传视频不清晰怎么办 MP4格式嫌大怎么办 课堂派怎么办改成考试 手机信息幕变黑怎么办 手机百度太耗电怎么办 电脑打不开主页面怎么办? 贴吧被永久封了怎么办 晒课视频太大怎么办 有道精品课过期怎么办 手机缓存变小了怎么办 优学院课程过期怎么办 上公开课紧张怎么办 光纤被老鼠咬断怎么办 石灰粉进入眼睛怎么办 幼儿误吃粉笔怎么办? 吃了粉笔应该怎么办 小孩吃了颜料怎么办 小宝宝吃了纸怎么办 孩子不认真听讲怎么办 监控手机软件离线状态怎么办 云课堂忘记密码怎么办 广州办培训机构怎么办 一师一优课账号忘了怎么办 云相册空间不足怎么办 三星云空间不足怎么办 三星储存空间不足怎么办 宁阳县教育局强制补课怎么办 沉迷网络该怎么办英语 29岁沉迷游戏怎么办 学乐云登录不上怎么办 魔方学院无法识别怎么办 路由器卫士忘记密码怎么办 邮箱号忘记密码怎么办 水卡没钱了怎么办 旅行青蛙换手机怎么办 软件尚未受信任怎么办 百度搜不到的怎么办 百度中搜不到怎么办