一、神经网络基本概念
神经网络可以分为生物神经网络和人工神经网络
(1)生物神经网络,指的是生物脑内的神经元、突触等构成的神经网络,可以使生物体产生意识,并协助生物体思考、行动和管理各机体活动。
(2)人工神经网络,是目前热门的深度学习的研究基础。目前对人工神经网络的定义多种多样,本书采用TKohonen1988年在NeuralNetworks 创刊号上给出的定义,即:"人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它能够模拟生物神经系统对真实世界物体所做出的交互反应"(Kohonen,1988)
二、最初的神经网络模型------M-P模型
回忆生物神经元的结构,细胞体 作为神经元 的主体,由细胞体向外延伸的多个突起神经纤维称为树突 ,树突作为细胞体的输入端,轴突 为细胞体向外延伸最长的突起,末端由很多细的分支被称为神经末梢 ,每一条神经末梢相当于细胞体的输出端。每个神经元通过轴突的神经末梢与其他神经元的细胞体或树突相连接,这种连接称为突触。
细胞体的细胞膜在正常状态下形成内负外正的膜电位,当神经元突触与上千个其他神经元连接时,接受不同输入对神经元点位的影响也不用(视为不同输入具有权重 ),当膜电位升高到一个阈值时,就会产生一个脉冲。突触也可以分为兴奋性和抑制性两种,兴奋性的突触可能引起下一个神经元兴奋,否则会抑制下一个神经元的兴奋。
M-P模型就是模拟生物神经元模型建立的数学神经元模型,多个输入各自具有权重,神经元本身就有一个阈值,输出值由输入权和减去阈值通过激活函数f得到。激活函数通常是当输入权和大于阈值时输出响应。
三、感知机模型
感知机模型以M-P模型为基础,但是能通过"学习"确定输入的权重和神经元的阈值。如果在输入层和输出层添加隐层,形成多层映射网络那就由单层感知机形成多层感知机。
学习修正的过程并不复杂,对于真实值和预测值引入损失函数,通过最小化损失函数(类比最小二乘确定系数a、b),不断修正w、θ,得到最优的输出结果。
四、BP神经网络
下面介绍最成功的神经网络之一:BP神经网络,BP即back propagation(误差逆传递)
Matlab
% Solve an Input-Output Fitting problem with a Neural Network
% Script generated by Neural Fitting app
% Created 23-Mar-2024 10:31:29
%
% This script assumes these variables are defined:
%
% iris_1 - input data.
% iris_2 - target data.
x = iris_1';
t = iris_2';
% Choose a Training Function
% For a list of all training functions type: help nntrain
% 'trainlm' is usually fastest.
% 'trainbr' takes longer but may be better for challenging problems.
% 'trainscg' uses less memory. Suitable in low memory situations.
trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation.
% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize,trainFcn);
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 60/100;
net.divideParam.valRatio = 20/100;
net.divideParam.testRatio = 20/100;
% Train the Network
[net,tr] = train(net,x,t);
% Test the Network
y = net(x);
e = gsubtract(t,y);
performance = perform(net,t,y)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, ploterrhist(e)
%figure, plotregression(t,y)
%figure, plotfit(net,x,t)
五、卷积神经网络
深度学习:自主层层抽取特征,从简单特征抽象到复杂特征
人类的视觉皮层处理视觉信息是通过一系列复杂且分层的步骤完成的。这个过程开始于眼睛,然后信息传递至大脑的不同区域进行进一步的处理。以下是这一过程的简化描述:
光线接收:
- 光线首先通过眼睛的角膜和晶状体,聚焦到视网膜上。视网膜含有两种类型的感光细胞:视杆细胞和视锥细胞。视杆细胞对光线非常敏感,适合在暗光条件下工作,而视锥细胞负责感知颜色和细节。
初步的视觉信息处理:
- 在视网膜上,光信号转换为电信号,这一过程涉及到神经元的活动。视网膜内的神经元通过不同的方式处理这些信息,例如,通过增强图像的边缘对比度来准备进一步分析。
通过视神经传输:
- 经过初步处理的信号通过视神经传送到大脑。值得注意的是,左视网膜的信号被传送到大脑的右半球,而右视网膜的信号则传送到大脑的左半球。
初级视觉皮层(V1区域):
- 信号首先到达大脑后部的初级视觉皮层,也称为V1区。V1区负责处理视觉信息的基本属性,如方向、大小、形状、颜色和运动等。
进一步的信息处理:
- 从V1区开始,视觉信息被传送到大脑的其他区域进行更复杂的处理。这些区域包括V2、V3、V4等,每个区域都对特定类型的视觉信息专门化。
- 例如,V4区更专注于颜色的处理,
- 而V5区(或MT区)主要处理运动信息。
高级视觉处理:
- 在经过多个视觉处理区域之后,信息被传递到大脑的高级视觉区域,如顶叶和颞叶。这些区域负责更复杂的视觉任务,例如物体识别、面孔识别和空间感知。
整个过程涉及到的是一个从简单到复杂,从局部到整体的信息处理机制。视觉信息在经过层层处理后,最终形成我们对外界的视觉感知。这种分层和专业化的处理机制使得人类能够快速、有效地理解复杂的视觉环境。
卷积是一种数学运算,广泛应用于信号处理、图像处理、深度学习以及许多其他领域。它代表了两个函数(或信号、数据序列)之间的关系,表明了一个函数如何通过另一个函数进行"形状修改"。数学定义
在数学上,两个函数(f)和(g)的卷积被定义为:
这里,(*)表示卷积操作,(t)通常表示时间位置,(f())和(g())是参与卷积的两个函数或序列。
形象意义
卷积可以被视为一个函数(g)在另一个函数(f)上的"滑动加权平均"。在这个过程中,(g)函数被反转并滑动过(f),在每个位置(t),计算(g)与(f)重叠部分的加权和。这个操作有助于提取(f)中的特征,其中(g)的形状决定了哪些类型的特征被提取。
应用
信号处理
滤波:通过与一个定义好的滤波器函数(比如低通、高通滤波器)进行卷积,可以从信号中提取信息或去除噪声。
系统响应:在系统分析中,系统对输入信号的响应可以通过将输入信号与系统的冲激响应进行卷积来计算。
图像处理
边缘检测:通过与边缘检测器(如Sobel、Canny滤波器)进行卷积,可以从图像中提取边缘信息。
模糊和锐化:通过与高斯滤波器(模糊)或拉普拉斯滤波器(锐化)进行卷积,可以实现图像的模糊和锐化处理。
卷积神经网络(Convolutional Neural Networks,CNNs)是一种在计算机视觉、图像处理、自然语言处理等多个领域中广泛使用的深度学习模型。它们特别适合于处理具有明显层次结构或空间关系的数据,如图像。
核心概念
卷积层
CNN的核心构成部分是卷积层,它通过滤波器(或称为卷积核)在输入数据上进行卷积操作,以提取数据的特征。每个滤波器负责从输入数据中检测特定类型的特征,比如边缘、颜色或者纹理。通过堆叠多个卷积层,CNN能够捕捉从简单到复杂的特征。
池化层
池化层(Pooling Layer)通常跟在卷积层后面,其主要目的是降低数据的空间维度(高度和宽度),从而减少计算量并防止过拟合。最常见的池化操作是最大池化和平均池化。
全连接层
在一系列卷积层和池化层之后,CNN通常会包含一个或多个全连接层(Fully Connected Layer),其目的是将前面提取的局部特征综合起来完成最终的任务,比如分类或回归。
工作流程
- 输入层: 输入层接收原始数据,如图像的像素值。
- 卷积层: 使用多个不同的滤波器在输入数据上进行卷积操作,产生一组特征图(Feature Maps)。
- 激活函数: 卷积层后通常会接一个激活函数,如ReLU(Rectified Linear Unit),以引入非线性。
- 池化层: 应用池化操作(如最大池化)来降低特征图的空间尺寸。
- 全连接层: 将前面的输出拉直并通过一个或多个全连接层来为最终的分类或回归任务做出决策。
- 输出层: 输出层给出模型的最终预测,如图像的分类。
应用
CNN在许多领域都有广泛应用:
- 图像识别和分类: 如识别照片中的对象。
- 物体检测: 检测图像中对象的位置和类别。
- 图像分割: 将图像分割成多个部分或对象。
- 人脸识别: 在照片或视频中识别个人的身份。
- 自然语言处理: 虽然CNN主要用于图像数据,但它们也可以用于文本数据的处理。
CNN通过其独特的架构能够有效地捕捉数据的空间层次结构,使其成为处理图像和其他类型空间数据的理想选择。
六、循环神经网络
循环神经网络(Recurrent Neural Network,RNN)是一种专门设计来处理序列数据的神经网络架构。与传统的前馈神经网络不同,RNN能够处理输入数据之间的时间序列关系,使其非常适合语言模型、时间序列分析、语音识别等任务。
核心特性
序列数据处理
RNN的主要特点是它们能够处理任意长度的序列数据。这是通过在模型中引入循环来实现的,使得网络能够保持对先前状态的记忆,并利用这些信息影响当前的输出。
参数共享
在RNN中,对序列中的每个元素执行相同的任务,且参数在各个时间步之间是共享的。这种参数共享机制使得RNN能够以相同的方式处理序列中的所有元素,无论序列有多长。
基本结构
RNN的基本单元包含三个主要部分:输入层、隐藏层和输出层。在每个时间步,RNN接收两个输入:当前时间步的输入数据以及前一个时间步的隐藏状态。基于这两个输入,RNN计算出当前时间步的隐藏状态,该隐藏状态随后被用于计算输出,并传递给下一个时间步作为其输入之一。
卷积神经网络(CNN)和循环神经网络(RNN)是深度学习中两种非常强大的神经网络架构,各自在不同的应用领域内表现出色。以下是对它们的擅长应用场景的概述:
卷积神经网络(CNN)
CNN主要用于处理网格状数据(如图像),并且特别擅长于以下场景:
- 图像处理:在图像识别、分类和分割中,CNN能够有效地识别并利用图像中的空间层次结构。例如,在面部识别、医疗图像分析等领域中非常有效。
- 视频分析:CNN可以用于处理视频帧以进行场景理解、活动识别或人流量分析。
- 物体检测:CNN能在图像中定位和识别多个对象,这在自动驾驶车辆的环境感知中非常重要。
- 风格迁移:利用CNN可以将一张图片的风格迁移到另一张图片上,这在艺术创作中被广泛应用。
循环神经网络(RNN)
RNN设计用来处理序列数据,擅长于以下场景:
- 语言模型和文本生成:RNN能够根据前面的文本来预测接下来的单词或字符,因而在文本自动生成、机器翻译等领域中表现出色。
- 语音识别:RNN能够处理音频信号中的时间序列数据,并且在将语音转换为文本的任务中得到应用。
- 时间序列预测:预测股票市场趋势、天气变化等需要分析时间序列数据的任务中,RNN能够利用之前的数据点来预测未来的数据点。
- 序列标记:比如命名实体识别(NER)或词性标注,RNN可以为序列中的每个元素分配一个标签。
综合对比
- 数据结构:CNN擅长处理空间信息(例如,图像中的像素),而RNN擅长处理序列信息(例如,时间序列或文本序列)。
- 模式识别:CNN通过学习局部特征来识别空间模式,例如,形状和边缘,而RNN通过时间步骤来学习序列中的模式。
- 参数共享:CNN通过卷积层实现参数共享,这使它们在处理图像时非常高效,因为图像的不同部分可以共享相同的特征检测器。而RNN在时间步骤之间共享参数,适合于处理长度可变的序列数据。
- 时间依赖性:RNN特别设计用来处理具有时间依赖性的数据,它们能够在时间步骤间传递信息,而CNN则不具备这种能力。
尽管CNN和RNN在不同的任务中有着各自的优势,但在实践中,往往会将它们结合起来,以发挥两者的优点。例如,在视频处理任务中,可能会用CNN来处理每一帧图像,然后用RNN来理解帧与帧之间的时间关系。此外,对于某些任务,如机器翻译,可能会用到一种叫做编码器-解码器(encoder-decoder)架构,其中编码器可能是CNN,而解码器可能是RNN。