前言

人工智能是什么呢?是让机器具备人的思维和意识 的一门技术。

比如:让机器在生活中识别出那只是小狗,那只是小猫;或者让机器预测一下股市的情况,看看哪些股票有较大概率会升;平常我们使用支付宝进行人脸识别付款,手机通过摄像头获取脸部的图像信息,经过神经网络模型识别出我们。

我们平常说的神经网络训练模型,其中的神经网络是人工模拟出来的,模仿人体大脑中的神经元连接关系,实现感性思维。

 

大脑

我们的大脑是在长期进化过程中发展起来的思维和意识的器官。它是由多个神经元互相连接形成的网络;一个神经元从其他神经元接收信号,也向其他神经元发出信号,网络上的信号的流动来处理各种各样的信息的。

神经网络pytorch 神经网络机器模拟的是_神经网络

单个神经元

神经元主要部分包括树突、细胞体、轴突。树突是从其他神经元接收信号的;轴突是向其它神经元发送信号的;细胞体会处理从树突接收到的信号,经过处理分析,决定是否向其他神经元传输信号。

神经网络pytorch 神经网络机器模拟的是_神经网络_02

神经元的处理信号的流程:

假设一个神经元从其他多个神经元接收了输入信号

1)这时如果所接收的 信号之和比较小,没有超过这个神经元固有的阈值,这个神经元的细胞体就会忽略接收到的信号,不做任何反应。

试想一下如果神经元对于任何微小的信号都变得兴奋,神经系统就将很敏感,遇到小小刺激就要做出反应,那不是很累很没必要?而且造成我们的情绪不稳定。

2)如果输入信号之和超过神经元固有的阈值,细胞体就会做出反应,向与轴突连接的其他神经元传递信号,这称为点火。

这里要注意的是:点火时从轴突向其他神经元传递的信号值是固定的,即便从邻近的神经元接收到很大的刺激,或者轴突连接着其
他多个神经元,这个神经元也只输出固定大小的信号。

我们在搭建(人工)神经网络结构时,需要考虑到神经元这个特征;

 

再看一下神经元工作的逻辑:

神经网络pytorch 神经网络机器模拟的是_数据_03

关键点:

  • 输入信号:如果输入信号一共有n个,即:x1, x2,··············, xn;比如输入端只有2个,即x1, x2
  • 求和:简单的求和,是直接把输入的信号量相加;但是通常使用权重求和,因为每个输入端的来源是不一样的,根据不同情况,设置好权重w的值,然后权重求和:x1*w1+ x2*w2+··················+ xn*wn。然后可能疑惑,那我怎么知道给每个输入端的权重w设置什么值啊,这个不用担心,我们在训练神经网络后,会得到最优的权重w值。
  • 激活函数:负责将神经元的输入映射到输出端;激活函数给神经元引入了非线性因素,使得神经网络可以任意接近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。那为什么要非线性??现实生活中的数据往往不是线性可分的,面对这样的数据,一般有两个方法:引入非线性函数、线性变换。

举个例子:(权重求和+阈值)

现在有两个神经元,神经元1的输入变量为x1,权重为w1;神经元2的输入变量为x2,权重为w2;神经元的阈值为 θ。

当w1=3; w2=7; θ=9; 通过权重求和(x1*w1 + x2*w2)的值和阈值为 θ对比,

  • 如果(x1*w1 + x2*w2)>=θ,说明会点火(细胞体通过突触发送信号到其他神经元);输出量y=1;
  • 如果(x1*w1 + x2*w2)<  θ,说明不会点火(不作反应);;输出量y=0;

输入变量为x1

输入变量为x2

权重求和(x1*w1 + x2*w2)

点火

输出量y

0

0

0*3 + 0*7 =0;0 <  θ


0

0

1

0*3 + 1*7 =7;7 <  θ


0

1

0

1*3 + 0*7 =3;3 <  θ


0

1

1

1*3 + 1*7 =10;10 >=  θ


1

 

神经网络(Neural Network,NN)

我们已经知道大脑是由神经元构成的网络,如果我们模仿着创建神经单元的网络,是不是也能产生某种“智能”呢;还真是呀🐷

神经网络是由多个神经元相互连接而成的;神经元之间是会进行信息交流的。

神经网络pytorch 神经网络机器模拟的是_神经网络_04

神经元之间进行信息交流:神经元的输入来自其他多个神经元的信号之和;

如果这个信号之和超过神经元固有的阈值,就会向与轴突连接的其他神经元传递信号。在一个神经元中即使有多个输出端,其输出的值也是同一个。神经元之间相互连接通信形成网络,产生不可思议的智能,于是人工神经网络它来了。

 

人工神经网络(Artificial Neural Network,ANN)

是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。

它具备学习功能;神经网络已经被用于解决各种各样的问题,例如:机器视觉和语音识别。

我们看看人工构建的神经网络:

一个神经网络通常包括输入层,隐藏(含)层,输出层;其中隐藏层也被称为中间层。(以下是简单的说法)

  • 输入层会获取数据(比如,在猫狗识别中识别中,我们就输入一张图片,那么这里输入层是一个神经单元);
  • 隐藏层会实现我们想要的功能(其中有转化、映射、提取学习等处理过程);
  • 输出层会有我们想要的结果(比如,在猫狗识别中,判断是猫的概率有多大,是狗的概率有多大;这样输出层有2个神经单元)

下面图1中,输入层有4个神经单元(输入4种/类数据);隐含层有3个神经单元;输出层有2个神经单元(说明输出2类)

神经网络pytorch 神经网络机器模拟的是_权重_05

注意:通常生物学术语“神经元”,人工神经网络中使用“神经单元”这个称呼。

专业一些的说法:

输入层 (Input layer)负责读取给予神经网络的信息。属于这个层的神经单元没有输入箭头,它们是简单的神经单元,只是将从数据得到的值原样输出。

隐藏层 (Output layer)在神经网络中,这是实际处理信息的部分。这层的神经元数目越多神经网络的非线性越显著,从而神经网络的强健性(控制系统在一定结构、大小等的参数摄动下,维持某些性能的特性)更显著。习惯上会选输入节点1.2至1.5倍的节点。

输出层 (Hidden layer)数据在神经元链接中传输、分析、权衡,形成输出结果;从而显示神经网络计算出的结果。

 

它能做什么能?

人工神经网络是一个能够学习,能够总结归纳的系统,也就是说它能够通过已知数据的实验运用来学习和归纳总结。它能够推理产生一个可以自动识别的系统。

 

它是怎么学习数据中规律知识的呢?

我们首先准备大量的数据,数据经过处理后输入到神经网络;让神经网络预测输出的结果,如果它预测得比较好(正确)那么就给它一些奖励,这里奖励是通过调整“神经元连接的权重”和“神经元的激励值”来实现的。

比如:预测正确了,那么加大这条路线的权重;给它神经元的激励值;

举个例子,下面从输入层x1到输出层y1中是有许多条路的,其中只有一条是正确预测输出y1的;那么我们就给它奖励,比如原来w1=0.3, w22=0.4, w31=0.37 ,增加为: w1=0.5, w22=0.6, w31=0.57 。同时其他预测失败的路线,给它们惩罚,减少w权重;

这样不断迭代下,w1, w22, w31 会不断增加;当某一条路的权重很小很小,我们认为这边条没有必要走了;输出结果预测正确的的概率会升高。

神经网络pytorch 神经网络机器模拟的是_神经网络pytorch_06

 

在过程中不断调整神经元连接的权重”和“神经元的激励值”,其实也叫校正。通过训练样本的校正,对各个层的权重进行校正(learning)而建立模型的过程,称为自动学习过程。

学习的最终我们能得到什么呢;

能得到各个神经单元的最优权重,最优激励值,最优偏置(这个后面讲)等;简单来说是训练好的模型,其实就是在搭建好神经网络的结构后,得到网络中最优参数(权重、偏置等),使得能较高的准确率来实现某个功能。

 学习规则(Learning Rule)

网络中的权重如何随着时间推进而调整;一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。

例如,用于手写识别的一个神经网络,有一组输入神经元。输入神经元会被输入图像的数据所激发。

在激励值被加权并通过一个函数(由网络的设计者确定)后,这些神经元的激励值被传递到其他神经元。这个过程不断重复,直到输出神经元被激发。最后,输出神经元的激励值决定了识别出来的是哪个字母。

 

怎么使机器具有思维和意识?

在机器中搭建人工模拟神经网络模型,通过训练的到一个最好的模块,然后保存好模型供下次直接使用。

 

神经网络--应用流程

  1. 准备数据:采集大量“特征/标签”数据;
  2. 搭建网络:搭建神经网络结构;
  3. 优化参数:训练网络获取最佳参数(反传);
  4. 应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)。

例如,输入不同猫的图片,并备注这张图片是猫;搭建输入层为4个神经单元(猫的4种特征);隐藏层是3*2的拓扑形状的神经单元组成;输出层是2个神经单元组成(代表:是猫,或不是猫)。

什么是“前传”呀,前面都没说到呀?“前传”即前向传播,数据由输入层经过隐藏层走到输出层,方向从输入层到输出层;

那什么是“后传”呀?“后传”即后向传播,也叫反向传播,缩写为BP,是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,简单来说是降低神经网络的误差,修正权重值等参数的;方向从输出层到输入层;

神经网络pytorch 神经网络机器模拟的是_神经网络pytorch_07

 

实际应用--鸢尾花识别

后续............