神经网络在分类中的应用

我们知道,逻辑回归可以用来分类,但仅仅是对于特征量很少时,当特征量特别多时,就不适用了,所以引入了神经网络。

声明一下,当类别数C>=3时,输出层有C个结点,否则只用一个结点就可以了;激活函数就是非线性函数比如sigmoid、Relu等。

1.神经网络

首先了解一下单一神经元内部的构造(图片来源https://blog.csdn.net/tyhj_sf/article/details/79932893)我们可以看到,一个神经元里边做了两件事,计算theta的转置*x(此时theta是一个4*1的矩阵,x也是4*1的矩阵,经过计算得到一个数)第二件事是将算出来的值带入到sigmoid函数(logistics)中计算,然后将计算出来的值传递给下一层,理解了这个,再来看多个神经元就好理解了。

 

神经网络的代价函数

具体推导公式参考https://blog.csdn.net/CarryLvan/article/details/103120782

2.梯度检测

估计梯度值,对比其和自己代码算出来的值是否相丝(确保他们只有几位小数的差距),判断程序算出来的梯度值正确与否。(进行学习,或训练网络时要关掉梯度检验;计算量很大,速度慢,检测确定后要及时关闭)

3.随机初始 化

不管是梯度下降还是高级优化算法,都需要对theta进行初始化,建议用随机初始化(不能设置为0)范围在接近0的[-epsilon,epsilon]之内。

4.流程化总结

4.1选择一种网络架构(神经元之间的连接方式:隐藏层的层数和每一层的结点个数)

输入层:特征个数m

输出层:分类类别数o(转化成向量)

隐藏层:默认只有一个隐藏层,若隐藏层个数>1,那么默认每一个隐藏层的神经单元相等(通常情况下,隐藏单元越多越好,但需要相匹配,可以等于输入神经元个数,也可以是输入神经元的若干倍)

4.2训练神经网络的步骤

1)随机初始化权重(小到接近于0的值)

2)执行前向传播算法,得到预测结果

3)计算代价函数J(theta)

4)实现反向传播算法,求出偏导数项

5)梯度检测(注意不用时关闭)

6)使用梯度下降、最优算法LBFGS、共轭梯度法等来最小化代价函数J(theta)

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值