[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,我们使用特殊的激活函数)

这个激活函数可以保证最后的全部结果相加为1

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

7.什么是激活函数

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

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

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

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

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

此外常用的激活函数

ReLU: max(0.z)

linear: z

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

8.神经网络的应用举例

图片识别

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

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

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

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

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

相关推荐
机器鱼10 分钟前
1.2 基于卷积神经网络与SE注意力的轴承故障诊断
深度学习·机器学习·cnn
励志成为大佬的小杨12 分钟前
pytorch模型的进阶训练和性能优化
人工智能·pytorch·python
知舟不叙21 分钟前
OpenCV的基础操作
人工智能·opencv·计算机视觉
果冻人工智能39 分钟前
打造 AI Agent 对于中产阶级来说就是场噩梦
人工智能
MediaTea1 小时前
AI 文生图:提示词撰写技巧与示例(ChatGPT-4o 篇)
人工智能
墨绿色的摆渡人1 小时前
用 pytorch 从零开始创建大语言模型(三):编码注意力机制
人工智能·pytorch·语言模型
zm-v-159304339861 小时前
ChatGPT 与 DeepSeek:学术科研的智能 “双引擎”
人工智能·chatgpt
果冻人工智能1 小时前
美国狂奔,中国稳走,AI赛道上的龟兔之争?
人工智能
果冻人工智能2 小时前
再谈AI与程序员: AI 写的代码越来越多,那我们还需要开发者吗?
人工智能