编程知识 cdmana.com

神经网络算法总结—ML NOTE 57

01

笔记

前面几个小节都讲了神经网络的一些东东,因为神经网络在机器学习中的地位实在是太重要了,所以需要单独一节把前面学到的事总结一下。

确定神经网络的结构

神经网络的结构呢,无非就是输入层、输出层外加隐藏层,那隐藏层有几层?每一层有多少个神经元?输入层、输出层分别又有多少个单元?

那这些多少,到底该是多少呢?在进行神经网络训练之前必须回答这些问题。

首先,输入层的单元数是由你的自变量的维度决定的;

其次,输出层的单元数又是由要分类的问题最终分成多少个类来决定的。

因此,神经网络结构的选择问题,实质上就是要确定隐藏层的层数以及各隐藏层的单元数目。

以3个输入单元、4个输出单元的神经网络为例,常见的隐藏层的设置如下图所示。

按分类的效果来说呢,隐藏层的单元数是越多越好的,但是过多的神经元会让训练相当的缓慢,因此需要平衡一下,一般将隐藏层的单元数设置为输入层单元数的2~4倍为宜。而隐藏层的层数呢就以1、2、3层比较常见。

神经网络训练的一般步骤

Step1:随机初始化权重;

Step2:实现前向传播算法,拿到各个输入的激活函数;

Step3:编码计算代价函数;

Step4:实现反向传播计算激活函数的偏导数。

看一下伪代码:

代码中的m是训练样本的个数。

Step5:使用梯度检验验证反向传播计算偏导数的代码是否正确,如果正确就关闭掉梯度检验部分的代码。

Step6:结合一些更优秀的算法算出能使代价函数最小的那些参数。

本文分享自微信公众号 - 讲编程的高老师(codegao) ,作者:中年糊涂的石头

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2020-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[讲编程的高老师]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1747118

Scroll to Top