人工神经网络(ANN)简单介绍

我自己的关于人工神经网络的理解

机器学习是人工智能的一个分支,可以通过专门的算法来时机器识别数据的模式和趋势,并成功进行预测和分类;

人工神经网络是机器学习中的一个概念

人工神经元模型

人工神经元就是受自然神经元静息和动作电位的产生机制启发而建立的一个运算模型。神经元通过位于细胞膜或树突上的突触接受信号。当接受到的信号足够大时(超过某个门限值),神经元被激活然后通过轴突发射信号,发射的信号也许被另一个突触接受,并且可能激活别的神经元。

人工神经元模型对自然神经元的复杂性进行了高度抽象的符号性概括。神经元模型包括多个输入(类似突触),这些输入分别被不同的权值相乘(收到的信号强度不同),然后被一个数学函数用来计算决定是否激发神经元。还有一个函数(也许是不变,就是复制)计算人工神经元的输出(有时依赖于某个门限)。

权值越大表示输入的信号对神经元影响越大。负的权值意味着输入信号收到了抑制。权值不同那么神经元的计算也不同。通过调整权值可以得到固定输入下需要的输出值。

当ANN是由成百上千的神经元组成时,手工计算这些权值会变得异常复杂。这时就需要一些算法技巧。调整权重的过程称为“学习”或者“训练”。

人工神经网络的三种主要的学习算法:

监督学习:

这类算法可以从人工神经网络获得一个函数,用来描述标记的数据。根据先验知识可以知道数据的属性,进而由人工智能得到描述这些数据的函数。

非监督学习:

这类算法的数据没有标记,不需要选择和标记数据,但人工智能需要做更多的工作。这种数据的分类通常由聚类等技术来实现。

强化学习:

系统接收输入,决策机制决定决策行为,执行该机制并给出相应的评分。最后,输入和动作要与评分相匹配,系统重复学习或根据一定的输入或状态来改变动作。

神经元和感知器:

感知器是一个可以接受许多输入并输出一个值的函数。

每个输入都有一个之相关联的权重,用来表示函数中输入的重要性。

网络层次

  • Input Layer:输入层
    输入层仅仅只是我们从真实世界获得数据之后,所格式化的特征数据,不会经过任何计算,它只是将这些特征数据传递给隐藏层。输入层定义了网络层的输入数目。
  • Hidden Layer:隐藏层
    隐藏层中的神经元并不会与外界相连,这也是为什么叫隐藏层的原因。
    这一层的作用,只是将输入层的数据进行计算与转换,然后传递给后续的输出层。而隐藏层可以有很多层。隐藏层中的神经元数的确定,一般依靠经验性方法,设置不同方式测试网络,选择合适的方式。
  • Output Layer:输出层
    输出层的主要作用是将隐藏层的输入进行计算与转换,将数据转化成外界所认知的事物。

反向传播算法:

计算误差并在输入和输出层两个方向更新网络;

更新相应神经元的权重。

  • 随机初始化Weight以及Bias
  • 对于每个训练集中的输入数据,ANN都会观察训练的输出与训练集结果(Label)
  • 接着我们将错误的结果反向传递给上一层,而上一层的Weight也会根据错误的结果进行调整
  • 重复上面的过程,直到错误的结果低于我们所设定的错误阈值

过拟合:

待分类训练数据提供的信息没有什么意义,而隐藏层又包含太多信息时就会发生过拟合。

根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。 过度的拟合了训练数据,而没有考虑到泛化能力。
      解决方法:(1)减少特征维度;(2)正则化,降低参数值。

参考书籍:

《OpenCV 3 计算机视觉 python语言实现》

参考链接:

https://blog.csdn.net/yu132563/article/details/80484324

https://www.jianshu.com/p/8cb2d2fcd5aa

https://www.cnblogs.com/eilearn/p/9203186.html

你可能感兴趣的:(其他)