ANN|学习笔记(二)

简介: 快速学习 ANN

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践ANN】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1067/detail/15447


ANN

四、激活函数

汇总数据经过激活函数之后才能输出。对二元分类来说,如果激活函数能产生两个值,1和0,那最好,哪些函数能够产生1和0,或者相似的二元分类呢?激活函数常用的有 sigmoid 函数、tanh 函数、softmax 函数等。左图为 sigmoid 函数可视化的结果。

image.png横坐标是 z,经过函数后产生的值为纵坐标,z 取0时

,0在中间,z<0时,值趋向于0,z>0时,激活函数趋向于1。经过 sigmoid 函数处理过以后,它的值一边取0,一边取1。小于0时,取得的结果趋向于0,大于0时,取得的结果趋向于1。

具体的公式如下图

image.png用程序把这个函数执行一下,图形便为

这是最经典的最早期的用于神经网络的激活函数。

左图为tanh函数,双曲正切函数。公式为

image.png公式里有自然数e,在自然科学里是非常重要的常数,它产出的图形结果如左图所示,当z<0时,函数结果趋向于*1,image.png当 z>0时,值趋向于1。tanh(z) 函数是 sigmoid 函数的一种变体,它的取值范围为[-1,1],而不是 sigmoid 函数的[0,1]。也能满足二元分类的要求。

 

五、一般的人工神经元网络结构

image.png中间多了个隐藏层,最起码是三层结构。有输入层,隐藏层和输出层。输入层里面的每个神经元接受一个输入数据,这里接受了 x1到x5的五个输入数据。中间的隐藏层有三个神经元,每个神经元相当于一个 M-P 的神经元模型。

它可以接收每个输入数据,以及在这个上面有权重,汇总后得到这个神经元的结果。再通过激活函数产生输出。隐藏层的每个神经元都是同样的工作机理。这样的神经网络结构才是真正的神经网络,最早的神经元是理解神经网络的基础。

单层感知器模型是最简单的神经网络。进一步发展为三层的神经网络结构。中间哪怕只有一层隐藏层,那也增加了很强大的功能。隐藏层的每个神经元都要与输入的神经元相连,上面都有权重,然后进行汇总,最后通过激活函数产生输出。每个隐藏的神经元都是这样的功能。因此神经网络具备了强大的功能。

输出层也是 M-P 神经元,他接收隐藏层产生的输出,在这个图里,隐藏层产生了三个输出,对于输出层来说为三个输入,上面也有权重 w,再经过输出层神经元的激活,产生输出。因为加了隐藏层,神经网络变得很智能。现在很热门的深度学习为有更多的中间层,早期的神经网络中间就几层,很多时候就用到一个隐藏层,层数加多了计算量是巨大的,早期的计算机能力不够,而且没有大数据的支持,所以早期的神经网络发展的非常缓慢。到了2010年、2012年,万事俱备,只欠东风,东风即计算能力和大数据。可以加入很多层,也可以计算了,所以产生了强大的计算功能。中间隐藏层的每个神经元,以及输出层的每个神经元。右边图的示意,中间的椭圆代表了一个神经元,代表了像隐藏层的神经元和输出层的神经元。输入层的神经元只接受输入数据,所以这里的椭圆代表了隐藏层的神经元和输出层的神经元。

它接收没个输入数据,这个输入数据可以认为是上一层的输入数据。对于隐藏层来说就是输入层,对于输出层来说是上面的隐藏层。产生的输入数据都有权重,传到这个神经元里,通过汇总以后经过激活函数,再产生输出。这个是一般神经网络的结构和原理。

神经网络模型要训练它,让它更智能。训练神经网络,意思是学习调整改变神经元连接的权重,这个是神经网络的本质。神经元里多了个权重,权重是最关键的。

激活函数很重要,里面最关键的是权重。输入一组样本数据,经过神经元网络学习后就能得出输出结果。输出结果可以帮助我们输出管理,输入图片经过神经元网络,判断是和否,x 数值不变,神经元如何实现强大的功能呢?就因为里面有权重,如果学的不对就再学,关键是调权重。加深一下对权重的理解,输入的 x 数据是不能变的。但输出不对的话,我们能改的只是权重。举例,一个班的同学老师上课讲的知识是 x 是一样的,每个同学接受的 x 是一样的,为什么有的同学学的好,有的学的不好呢?因为每个同学的权重不同,对于名师来说,善于调整学生的权重。比如,中学生背单词,一个单词背错了,老师让他背十遍,抄十遍,目的是调权重,因为输入的 x 这个单值是一样的,只能调权重,如果哪个名师有特异功能,对手上面敲两下,脑袋上面发个功,权重就能调整,那这个名师很厉害。

ANN 学习算法

Initialize the weights (w0, w1,.... ,Wk)

Adjust the weights in such a way that the output of ANN is consistent with class labels of training examples

Objective function:

Find the weights wi's that minimize the above objective function

e. g., backpropagation algorithm (see lecture notes)

先初始化一组权重,因为输入的 X 是不变的是一样的,一组对应的权重,然后调整这一组权重。调整权重的依据是神经网络的输出值和样本里面带的标签值,来进行比较。因为这个是有接口的分类算法。根据神经网络模型输出的结果和标签结果之间的差异来调整权重,所以需要一个函数,这个函数叫做目标函数,或者成本函数,或者损失函数。这个函数的公式所示,

E 是损失、误差、成本、目标,Yi 是样本真实的标签值,Y 和 y 代表的意思一样,f(wi,xi)中 X 是神经网络的输入数据,W 是权重,f 是激活函数。经过激活函数处理以后,得到的是模型的输出值即预测值。预测值和真实标签值的差值就是误差,一般用误差的平方来表示目标函数或者是成本函数或者是损失函数,这是数学上的一种表达。这是学习算法的一个抓手,一个依据,一个目标,就是有损失函数。训练的理想状况是让损失函数越小越好。让它最小化。即让误差最小。如何让它最小呢?

因为输入的 X 不变,所以只能调整权重,即发现这一组权重,这组权重让目标函数最小,所以数学逻辑很清晰。实际上,神经网络背后最重要的是这些数据。对神经网络来说,最后如何调整权重让误差最小?是内部最关键的技术,如果要推导则非常复杂。有一些算法可以让误差最小,比如 BP 算法,也叫 BP 神经网络,它是误差反向传播的机制,来实现误差最小。如果用中文表达为最小化误差的平方和。

如果把刚刚误差的平方和可视化,应该是个抛物线,如下图所示,纵坐标是成本函数,也可以用 E 表示即为误差函数,纵坐标代表每一个误差,横坐标是输入输出的函数,希望在抛物线上面找到误差最小的那个点,这便是训练的目标。那么,在训练的过程中,如何找到最低点呢?需要一个算法知识,比较常用的是 BP 算法里的梯度下降。梯度下降非常形象,比如随机的一个误差在一个点上面,目标是让误差最小,那该怎么办呢?可以从这个点向上移动,也可以向下移动,看误差是否变小。发现向上移误差变大,因此,不能向上移动,应该向下移动,向下移动误差会变小,也就是梯度在下降,一直降到误差最小。因为这是一条抛物线,是一个凸函数。通过梯度下降便可以找到最低点。梯度下降在数学上面是,在抛物线上求导数,需要用到微积分。

将训练集放入神经网络并获得输出,输入数据是训练集,里面有 X1,X2 等等。然后与权重相乘,到神经元激活产生输出。

将输出与期望输出做对比,期望是标签值,是 y,做对比即求误差,误差一般用平方表示,要构造成本函数,也就是误差函数,来计算误差。基于误差值和使用的成本函数,决定如何改变权重以使误差最小。改变权重有许多算法,其中一个是 BP 神经网络,有一个梯度下降的算法。需要用到微积分,来一步一步求。重复该过程直到误差值最小。

image.png

相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用
深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用
|
8月前
|
机器学习/深度学习 自然语言处理 算法
一分钟了解人工神经网络(ANN)
人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络的算法数学模型,用于进行信息处理和模式识别。 人工神经网络的基本原理是模拟人脑中神经元之间的相互连接和信息传递。它由多个人工神经元(节点)组成,这些神经元通过连接权重相互传递信号,并通过激活函数对输入信号进行处理。如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
|
机器学习/深度学习 人工智能 自然语言处理
论文解读系列| 04:【NER】FLAT模型详解
FLAT也是一种将词汇信息融入character-based模型的解决方案。有2个创新点(1)将lattice结构转为由spans组成的平铺结构,每个span可以是字符或者词及其在原始lattice结构中的位置;(2)基于Transformer设计了一种巧妙position encoding来充分利用lattice结构信息,从而无损地引入词汇信息。
|
机器学习/深度学习 算法
KNN算法学习笔记
KNN算法学习笔记
246 0
|
机器学习/深度学习 传感器 算法
【ANN预测】基于遗传算法优化 ANN附matlab代码
【ANN预测】基于遗传算法优化 ANN附matlab代码
|
机器学习/深度学习 存储 移动开发
机器学习算法之——K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解
从这些实例中泛化的工作被推迟到必须分类新的实例时。每当学习器遇到一个新的查询实例,它分析这个新实例与以前存储的实例的关系,并据此把一个目标函数值赋给新实例。
机器学习算法之——K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解
|
机器学习/深度学习 人工智能 自然语言处理
【推荐系统】隐语义模型(LFD)与矩阵分解(Matrix Factorization)
【推荐系统】隐语义模型(LFD)与矩阵分解(Matrix Factorization)
213 0
【推荐系统】隐语义模型(LFD)与矩阵分解(Matrix Factorization)
|
机器学习/深度学习 人工智能 算法
|
机器学习/深度学习 人工智能 算法
KNN 算法|学习笔记
快速学习 KNN 算法
158 0
KNN 算法|学习笔记
|
机器学习/深度学习 编解码 自然语言处理
YOLOv4中的tricks概念总结——Bag of specials
YOLOv4中的tricks概念总结——Bag of specials
317 0
YOLOv4中的tricks概念总结——Bag of specials