神经网络

神经网络被发明后,最初的动机是能够编写软件、能够模拟人的大脑或生物的大脑学习和思考的方式。人类的一切思想起源于大脑的神经元,神经元发送电脉冲,有时会与其他的神经元形成新的连接。一个神经元使用树突接受输入,轴突用于输出。在某些数据庞大的应用领域,使用神经网络可以极大地提高运算效率。

image-20230216113518058

一、神经网络是如何工作的

首先,举一个简单的例子,例如我们准备预测衣服的销量如何。我们收集到了衣服的价格、种类以及哪些是畅销的等信息。在这个例子中,衣服的价格是输入,使用逻辑回归后的预测结果作为输出。在逻辑回归中,使用a表示输出,它的意思是“激活”,这是神经科学中的术语,指的是一个神经元向下游的其他神经元发送高输出值或许多电脉冲的程度。这个逻辑回归模型就相当于一个简化的神经元,输入特征“价格”,经过计算输出商品畅销的概率,

image-20230216115142323

事实上逻辑回归算法比真正的神经元简化的多,但是人工神经网络在深度学习中是非常有用的。我们已经了解了单个神经元的工作,接下来用更复杂的例子了解神经网络的工作流程。

我们将使用四个特征来预测衣服的是否畅销,这些特征包括价格、运输成本、营销能力以及面料的质量。我们可以想到,一件衣服是否畅销取决于几个因素,一是可负担性,二是知名度,三是对质量的感知。创造几个人工神经元来估计畅销的概率:

1.可负担性是关于价格和运输成本的函数,输入价格和运输成本,使用一个逻辑回归单元预测是否能负担;

2.创造一个神经元评估知名度,这里主要指营销能力;

3.再创建一个神经元来评估人们是否认为衣服质量好,这一般与价格和面料的质量有关。

将这三个神经元组合在一起成为一层称作隐藏层,因为我们可知数据集样本为(x,y) ,可观察到输入x和输出y,而中间的被隐藏起来了。输入的特征作为一层称为输入层,输出也作为一层称为输出层。可负担性、知名度、质量感知等特征作为隐藏层的激活值。

image-20230216122137287

在这个模型中,选择价格和成本两个特征作为可负担性这个神经元的输入,但如果在大型神经网络中,由我们手动选择哪些特征作为哪些神经元的输入,这是十分麻烦的,于是需要简化模型。神经网络中,每个神经元都处于某一层,每一个神经元都可以访问从上层到输入层的每一个值。通过适当的设置参数,使得神经网络只关注需要作为输入的特征。将输入的几个特征变成特征向量x,输入到隐藏层层,得到几个激活值,这又变成一个激活向量a,将它输入到输出层得到这件衣服畅销的概率。

有意思的是,当我们不看输入层,隐藏层部分到输入层部分实际上是一个逻辑回归模型,使用可负担性、知名度、感知质量作为输入,使用逻辑回归预测畅销的概率。在线性回归模型中,我们手动设计了特征,比如将长和宽的积“面积”作为新的特征。但神经网络所做的是,不需要手动设计特征,它会自动学习特征,这个特点使神经网络成为世界上最强大的学习算法之一。

二、神经网络数学原理及术语

image-20230216163425612

三、前向传播

由于神经网络的计算是从左到右,一层一层的推进,例如从输入x到计算a1再到a2......直到输出,所以这种算法被称为前向传播算法。

image-20230216164638629

四、TensorFlow中的数据形式

先看一下numpy中的数据形式,是如何存储矩阵的。

image-20230216165802844

TensorFlow中用张量表示矩阵

image-20230216171541022

五、在TensorFlow中搭建神经网络

image-20230216173256217

六、前向传播的一般实现(纯Python)

image-20230216182252461

七、人工智能的分类

人工智能分为弱人工智能和强人工智能。弱人工智能指的是在某些应用领域可实现智能化,诸如智能音箱、自动驾驶、智能搜索、智慧农场等。而强人工智能指的是能够模拟人的行为,做人类可以做的任何事。

微信图片_20230222113816

八、激活函数

1、常见的激活函数

经常使用到的激活函数有三种,线性函数、Sigmoid函数、Relu函数。

微信图片_20230222113817

2、如何选择激活函数

通常,我们依据输出标签来选择合适的激活函数。对于二分类问题,只有两种可能的输出,就选择Sigmoid函数;对于输出可能有正有负,就选择线性函数;对于输出为非负值,就选择Relu函数。

微信图片_202302221138171

更多的,在神经网络中,我们通常将隐藏层的激活函数设置成Relu函数,将输出层的激活函数设置成Sigmoid函数,隐藏层一般不使用线性函数。

微信图片_202302221138173

3、为什么需要激活函数

当我们把所有的激活函数都设置成线性,最后的效果是等同于没有改变。这样,神经网络的设计就失去了意义。

神经网络-小白菜博客
image-20230222120302000

九、高级优化方法

梯度下降算法是机器学习中被应用得最广泛的优化算法,它是线性回归、逻辑回归还有神经网络早期的基础,但是除此之外还有一些其它的优化算法来最小化代价函数,甚至比梯度下降还好。

Adam算法

Adam算法可以自动调整学习率,当学习率太小导致下降过慢时,Adam算法可以适当提高学习率,使之更快到达最小点;当学习率过大导致下降时发生震荡,Adam算法可以减小学习率,使之更平滑的下降到最低点。

image-20230222151953443

十、其它的网络层类型

目前我们接触过的网络层都是全连接类型,其中这一层的每个神经元都从前一层得到所有的激活。但在实际生活中,可能会使用不同类型的层,在某些工作中可能会看到另一种层类型,被称为卷积层。

image-20230222153133200

为了识别图片上的数字,让隐藏层的每一个神经元只识别图片的一部分区域,这样可提高训练的速度,并且只需要更少的数据,不容易过拟合。这种层被称为卷积层。使用卷积层的神经网络被称为卷积神经网络。

image-20230222153942347

最新的前沿模型还有transformer、LSTM(长短期记忆网络)、attention(注意力模型)。