[machine learning]神经网路初步 basic neural network

这一篇写的很差....我会找时间慢慢补充的 

1.神经网络是什么

在上一篇关于逻辑回归的博客中,简单介绍了逻辑回归模型,对于监督学习来说,模型可以理解为一个模块/函数,在足够的数据训练以后,通过梯度下降等手段进行拟合,最终根据输入来预测输出结果.

这一个东西,我们可以称之为神经元(初中生物)

多个神经元可以组成层(layer),最终多个层可以组成一个神经网络

神经网络和单一的逻辑回归模型一样,同样是多个数据的输入来进行训练,最后得到我们需要的结果.

2.为什么要使用神经网络

相比于单一逻辑回归计算,神经网络对于高复杂度的数据有更好的训练结果展示,例如具有多个特征或者多个需求模块识别的时候,使用神经网络是更加合适的选择.

此外神经网络的自适应性很高,每个节点的权重数目可以随着特征数目而变化,可以根据输入数据的变化进行调整。这使它们能够处理不断变化的环境和数据分布。

3.神经网络的展示

神经网络的大致结构如下所示:

在本图中图片分为: 输入,隐藏层1,隐藏层2,隐藏层3,输出层,输出

 根据输入的训练数据,对每一层的每个神经元进行梯度下降等方法训练,每一层输出维数和层中神经元数目一致的向量(不同的框架库对于向量的表示方法不一样,反正你就记着不是数组就对了)

正因为神经元数目足够多,并且结构比较复杂,像这种每个神经元都需要完全接收输入的情况(这种层称之为密集层(dense layer)),需要的训练数据比单一模型训练更加复杂和耗时.

另外每一层可以单独设置激活函数(activation function),这一点会在后面讲到.

4.神经网络的传递细节

对于神经网络来说,每一层的输入是一个向量,每一层的输出也是一个向量

细致结构如下

在这个简单的神经网络示意图中,a[2]是隐藏层2的输出结果,a[2]的特征值数目与layer2中的神经网络数目一致,一个神经元负责计算一个分量.

而在layer3中,由于本图展示的3是密集层,所以神经元都能独立完全接收到整个输入的数据a[2],神经元会根据传入的特征值的数目,自行安排权重向量w的数目.

最后再使用激活函数,对于每个神经元的输出结果做简单处理.组合成新的输出结果a[3]

(注:训练原理仍然是梯度下降)

5.神经网络的分层

神经网络有很多分层,像上面的称之为(Dense layer),特点是每个神经元需要获取到全部的特征值,至于具体最后的结果是否不需要某个特征值,这个是训练结果决定的.如果根据使用特征值的情况进行连线,最后的结果是这样

所以被称之为密集层.

而如果使用卷积层(reconvene),可以指定某个神经元只能读取某些特征值,举个例子,对于一张图片的读取来说,我们可以给神经元分配任务,让某些神经元只获取特定区域的信息

6.多分类问题

在上述的图片中,神经网络的最终实现结果是一个输出,比如说我们可以使用sigmoid激活函数,最终可以得到一个预测值,比如说预测一个东西是不是车,神经网络会回答你"是"/'不是'(或者说有多大概率是)

但是如果我们的输出需求可能有很多,比如判断一张图的东西是车?马?人?或者比如说数字识别,是1还是234579?这种情况下当然可以构建"神经网络森林".但是这样子训练开销增加巨大,数字只有十个,但是汉字?

并且就算使用多个神经网络,最后的计算结果,训练过程也不一样,到时候的输出结果:

1的可能性为=0.77  ,2的可能性为0.36

这不是很尴尬/

为了处理这种问题,我们可以使用一种名为softmax的多分类算法

softmax:

在最后的输出层不再是单一的输出,而是根据需求设置的多个神经元数目,每个神经元代表一种可能的输出,其实思路很简单

最后一层我们也可以称之为softmax层,每一层仍然是利用到一样的方法.

然后为了实现归一化(即让所有结果的预测值可能性相加为1,我们使用特殊的激活函数)

g=\frac{e^{z1}}{\sum e^{zx}}  这个激活函数可以保证最后的全部结果相加为1

以上就是对分类问题的处理方法.其实对于solfmax算法还有一些可以改进的乙方,这个就后续有机会再说坝

7.什么是激活函数

对于一些wx+b的计算结果来说,可能最终的计算结果并不符合我们的心意.

例如要预测什么东西,结果给哥们干出一个77.....

一方面是对数据进行规整化的处理,另一方面是为了让数据更加符合我们的需求,我们要对预测结果加上一个激活函数.

向上面来说,我们在softmax使用了规范化的激活函数,预测概率的基础上,让整体的结果相加为1

还有我们之前常用的sigmoid函数也是一种激活函数

此外常用的激活函数

ReLU:  max(0.z)

linear: z

对于每个网络层来说,激活函数都是必不可少的,他表示了我们将以何种方式来处理最终的输出矢量,每种激活函数都有属于自己的适用场景和功能

8.神经网络的应用举例

图片识别

 图片识别的本质其实是神经网络获取图片的特征,然后将根据特征值计算出这是什么东西

第一个隐藏层在图片中寻找"边角"这种特征值

第二个隐藏曾在上一层边角中寻找面部特征

第三个隐藏层在上一层的面部特征中,预测匹配的脸型

9.使用tensorflow实现简单的神经网络

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值