人工神经网络:导论和应用
2022-08-24 本文已影响0人
大龙10
书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第10章目录
10.1 人工神经网络:导论和应用
1、神经元
- 计算机科学家早已从人类大脑中获得一些灵感。
1943年,神经学家Warren S.McCulloch和逻辑学家Walter Pitts共同开发了第一个概念性人工神经网络模型。 - 在一篇名为A logical calculus of the ideas imminent in nervous activity的论文中,他们这样描述神经元:
一个处在网络中的细胞,能够接收输入,然后处理这些输入,并产生输出。 - 他们没有精确描述大脑的工作方式,后续的诸多人工神经网络研究者也是如此,人工神经网络只是一个基于大脑工作方式设计的用于解决特定问题的计算模型。
2、模式识别
- 神经网络最常见的应用就是执行“人类容易解决,而计算机难以解决”的任务,这类任务通常称作模式识别。
- 神经网络的应用范围很广,从光学字符识别(将手写或打印文本转化为数字文本)到面部识别。
3、神经网络
- 神经网络是一个“联结”的计算系统,而我们编写的计算机程序是过程式的:程序从第一行代码开始,执行完这一行代码后就继续执行下一行,所有指令都是以线性方式组织起来的。
- 神经网络并不遵循线性路径,相反,整个网络的节点(节点就是神经元)以并行的方式处理信息。
-
神经网络也是复杂系统的一个例子,它和第6章、第7章和第8章的某些概念类似。
作为神经网络的个体元素,神经元的功能非常简单,它只读取输入,处理输入信息,最后产生输出。
但由诸多神经元构成的网络却能表现出极其丰富和智能的行为。
4、学习能力
- 神经网络的关键要素之一是它的学习能力。
- 神经网络不只是一个复杂的系统,还是一个复杂的自适应系统。
这意味着它可以根据流经的信息改变自身的内部结构,一般情况下,这个过程通过调整权重的方式实现。
在上图中,每一条连线表示两个神经元之间的连接,箭头表示信息流的通路。 - 每个连接都有自己的权重——控制两个神经元之间信号传递的数字。
如果网络产生一个“好”的输出(我们会在后面定义什么是“好”的输出),则不需要调整权重;如果网络产生一个“差”的输出,也就是一个错误,
那么
系统将会执行适应过程,改变自己的内部权重,以改进后续的输出结果。
5、学习策略
神经网络有多种学习策略,本章会学习其中的两种。
- 监督式学习
本质上,这种策略还涉及一个“老师”,“老师”比神经网络本身更智能。在面部识别中,“老师”向神经网络展示一系列脸部照片。神经网络先猜测这些脸的名字,随后“老师”告诉它正确答案,让神经网络比较猜测结果和“正确”答案的区别,再根据错误进行调整。下一节涉及的神经网络就属于这种类型。 - 非监督式学习
这种策略适用于没有已知数据集的情况,比如在一个数据集中寻找隐藏模式。聚类就是此类神经网络的一种应用,它的功能是根据未知规律对一组元素进行分组。本章不会学习任何关于非监督式神经网络的例子,因为这种策略与示例程序的相关度很低。 - 增强式学习
这种策略构建在观察基础上。想象一只老鼠走迷宫:如果它朝左走,会得到一块奶酪;朝右走,会受到惊吓。
经过一段时间的学习后,老鼠会自觉向左转。
其中学习过程大概是这样的:老鼠的神经网络先做出转向的决定(朝左还是朝右),再观察它的环境。如果观察结果是消极的,为了在下次做出不同的决定,网络会调整内部权重。
增强式学习在机器人中比较常见。在t时刻,机器人执行某项任务并观察结果:它是撞到了一堵墙或者从桌子上掉落,还是依旧安然无恙?在本章的转向小车模拟中,我们会学习这类神经网络。
6、应用场景
神经网络的学习能力和调整内部结构的能力使得它在人工智能领域非常有用。下面是神经网络在软件领域的几种应用场景。
- 模式识别
我们已经提到过模式识别,这可能是神经网络最常用的场景。具体的应用实例有面部识别、光学字符识别等。 - 时序预测
神经网络可以用来进行数据预测。比如,明天的股票是涨是跌,明天是晴天还是雨天? - 信号处理
人工耳蜗植入术和助听器需要过滤掉不必要的噪声并放大重要声音。神经网络可以经训练从而处理音频信号,并适当地过滤信号。 - 控制
你可能听过自动驾驶汽车的研究动向。神经网络通常被用来管理物理汽车
(或模拟汽车)的转向决策。 - 软传感器
软传感器指的是测量集合的分析处理。温度计可以告诉你空气温度,其他传感器会告诉你湿度、气压、露点温度、空气质量、空气密度等数据,神经网络处理从这些传感器接收的输入数据,将这些数据作为整体进行评估。 - 异常检测
由于神经网络擅于识别模式,它们还可以检测某些事情是否合乎规律。想象某个神经网络正在监视你的日常行为,经过一段时间,它已经掌握了你的行为模式。当你做错某些事时,它能做出提醒。
神经网络是复杂且困难的,它涉及各种高深的数学知识。虽然其中的很多技术非常有吸引力(同时在科学研究上有重要意义),但在Sketch的动画和交互程序中并没有实践意义。
我们将在本章学习最简单的神经网络模型,只是为了理解如何将概念运用到代码中。后续我们会用Processing Sketch构建这些概念的可视化结果。