本文主要是介绍深度学习-----学习笔记(二)(修仙~~~ing),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、什么是人工智能?
- 1. 达特茅斯
- 2.三大主义与三大流派
- 3.四个难点
- 二、机器学习算法
- 1. 监督学习
- 2. 非监督学习
- 3. 强化学习
- 三、神经网络(上)
- 1. 简单介绍
- 2.激活函数
- 2.1 阶跃函数
- 2.1.1概念
- 2.1.2图形
- 2.1.3代码实现
- 2.2 Sigmoid函数
- 2.2.1概念
- 2.2.2图形
- 2.2.3代码实现
- 2.3 ReLu函数
- 2.3.1概念
- 2.3.2图形
- 2.3.3代码实现
- 2.4 tanh函数
- 2.4.1概念
- 2.4.2图形
- 2.4.3代码实现
- 总结
前言
笔记(一)中,机器学习的分类叙述不够完整。这里做下补充。此笔记先大概叙述下人工智能,再完善下机器学习的介绍,再从笔记(一)的感知机接起介绍下神经网络的一部分。(下半部分后边在写)(仅代表笔者所了解到的,有问题可讨论)
一、什么是人工智能?
阿兰·麦席森·图灵和约翰·冯·诺依曼两位猛男有着无与伦比的影响力。
图灵测试(在测试者与被测试者互不接触的情况下,按照某种方式向被测试者随意提问,如果在长时间的问答里,根据这些问答的结果没有办法判断被测试者是人还是机器人,那么就认为这台计算机能够像人一样思维)直接从行为表现上判断一个机器是否具有人类的思维。这也是实现人工智能的主要流派之一“符号主义”的经典实验。
约翰·冯·诺依曼生平更是传奇,他的遗作《计算机与人脑》展现出猛男的与众不同。
“神经系统是这样一台计算机,它在一个相当低的准确度水平上,进行着非常复杂的工作。”------《计算机与人脑》
1. 达特茅斯
1956年夏在达特茅斯与会者重点讨论了七个方面问题: 1.自动编程计算机
2.自然语言理解
3.神经网络
4.计算复杂度
5.自我改进
6.抽象
7.随机性与创造力
他们将对人工智能的定义归为四类:第一类强调像人一样思考(有头脑的机器);第二类强调像人一样行动(如何让计算机做哪些人比机器更擅长的事情);第三类强调合理的思考(使用计算模型研究智力);第四类强调合理的行动()。
2019年经济合作与发展组织发布全球首个政府间人工智能标准建议中认为:人工智能系统(AI System)是一个基于机器的系统,对于一组给定的人为目标,可以做出影响真实或虚拟环境的预测、建议或决策。
2.三大主义与三大流派
将机器与人相比,人工智能大体可分为运算智能、感知智能和认知智能三个层次。
与人类能力类比 | 目前水平 | |
---|---|---|
运算智能 | 快速计算和记忆存储能力 | 机器超过人类 |
感知智能 | 视觉、听觉、触觉等感知能力 | 人与机器相当、但机器具备诸多人类感官之外的能力 |
认知智能 | 分析、思考、理解、判断的能力 | 机器不如人类 |
围绕“如何判断机器具备人类的智能”,可将人工智能的实现路径分为三个主要流派:
三大流派 | 介绍 |
---|---|
符号主义 | 认为只要通过符号计算实现相应功能,则可视为具备现实世界上的某种能力。eg:图灵测试 |
连接主义 | 认为大脑是智能的基础,实现智能必须通过模拟大脑里的神经网络和连接机制。eg:深度学习 |
行为主义 | 认为智能取决于感知和行动,不需要知识、表示和推理,只需要行动具备智能特征。eg:六足机器人 |
而深度学习大体上就是用人类的数学知识与计算机算法设计一种架构,在结合尽可能多的训练数据、优化的计算方法,以及计算机大规模运算能力去调整内部参数配置,尽可能逼近问题目标的方法。
神经网络就像是一个集成的贴合实际(理论上)的非线性函数,反向学习得到模型,在进行正向的推理。这个复杂网络的每层都可以进行参数的调整与结果的的计算。
3.四个难点
当前,人工智能所采用的深度学习是利用机器算法模拟人脑对知识学习、吸收与理解并掌握运用的训练过程。这就需要大量的数据(重复的确定性事件毫无意义)和处理这大量数据的能力。而这两者的飞速进步又促进了深度学习的发展。
但以深度学习为代表的“第三波人工智能”还是存在四个问题。
- 过分依赖数据量
- 算法黑箱(基于参数调整来进行人工智能,会导致知其然却不知其所以然,遇到一些问题就无法解释。)
- 能耗激增
- 场景锁定(过于依赖于特定的场景)
二、机器学习算法
机器学习的课题就是让计算机去算参数。学习是确定合适的参数的过程,而人要做的是思考模型,并把训练数据交给计算机。
机器学习算法大致可以分为三种:监督学习(如分类、回归)、非监督学习(如聚类、降维)和强化学习。
1. 监督学习
从一个标记好的数据集中进行学习。这个数据集中每个样本特征都是对欲求情景的描述,标记则是应该要执行的正确动作。 例如,一个小孩没见过海和山,你事先告诉他这两者的特点(特征),他运用这些特点将两者分辨出来。
2. 非监督学习
输入的数据集中没有标记,只依靠这组数据集,在该数据集内寻找规律。在发现某种规律后,可按自然的聚集性分类,但不以划分数据集为目的。它的设计思想是,让计算机自己学习做法。还是那个小孩,但这次你没告诉他,他自己寻找规律,将山和海区分开来。
3. 强化学习
当前在自动驾驶规划与过程中最热门的学习方法。强化学习是智能体(一个可以观察自己周围环境,并做出行动达到目标的系统)如何将它所处的环境和在此环境下应采取的行为联系起来,以求获得最大的累积回报。
强化学习是从环境状态到动作的映射的学习,通常把这个映射称为策略(Policy)。
在强化学习中训练的算法都能感知自己的环境,并根据目标来指导自己的行为。然后每完成一个训练阶段环境就会根据此算法的行为返回一个信号,可以记为Reward。Reward定义了在该环境下执行此行为的好坏。这样,训练的算法就可以根据Reward的值来调整自己的Policy。
强化学习是边获得样例、边学习,在获得样例后更新模型,再根据此模型进行一次行动,然后获得了一个Reward信号,再根据Reward信号再次更新模型,然后不断重复这个过程直到模型收敛。
总而言之,强化学习与其他机器学习算法不同的地方在:强化学习没有监督者,只有一个Reward信号且而此反馈信号是延迟的,不是立即生成的。Agent的行为也会影响之后一系列的数据。是一种不断与环境交互的试错学习。
三、神经网络(上)
感知机的参数(权重和偏置)是由人设定的,而神经网络的一个重要性质就是它可以自动学习符合预期的参数。
1. 简单介绍
可以用下图表示神经网络,最左边称为输入层,最右边称为输出层,中间称为中间层或者隐藏层。
感知机得到一个公式
y = { 0 ( ω x 1 + ω x 2 + b ≤ θ ) 1 ( ω x 1 + ω x 2 + b > θ ) y=\left\{ \begin{aligned} 0 (& \ ωx_1+ωx_2+b\leθ) \\ 1 (& \ ωx_1+ωx_2+b>θ) \\ \end{aligned} \right. y={0(1( ωx1+ωx2+b≤θ) ωx1+ωx2+b>θ)
可以进一步简化这个公式, y = h ( ω x 1 + ω x 2 + b ) y=h(ωx_1+ωx_2+b) y=h(ωx1+ωx2+b)
这样,将ωx1+ωx2+b看作自变量就能得到一个h(x)的新函数:
h ( x ) = { 0 ( x ≤ θ ) 1 ( x > θ ) h(x)=\left\{ \begin{aligned} 0 (x\leθ) \\ 1 (x>θ) \\ \end{aligned} \right. h(x)={0(x≤θ)1(x>θ)
这个h(x)函数就可以称之为激活函数。激活函数将输入信号经过计算后的总和转换为输出信号表示为0和1,即对于函数h(x)而言在x≤θ时为0,在x>θ时为1。这就相当于由x来对h进行激活(0:未激活;1:激活)。
2.激活函数
激活函数使用较多的有阶跃函数、Sigmoid函数、ReLu函数、tanh函数等等。
2.1 阶跃函数
2.1.1概念
三.1里的h(x)以阈值θ为界,一旦超过阈值,就切换输出,这样的函数就叫做阶跃函数。
2.1.2图形
2.1.3代码实现
def step_function(x):if x>0:return 1elsereturn 0
2.2 Sigmoid函数
2.2.1概念
Sigmoid函数数学表达式如下:
h ( x ) = 1 1 + e − x h(x)=\frac{1}{1+e^{-x}} h(x)=1+e−x1
2.2.2图形
Sigmoid函数是一条平滑的曲线,典型的非线性函数,输出随输入是连续变化,这和阶跃函数有着很大的区别。也正是因为这个特性,神经网络才有了继续的意义。因为需要反向学习来计算参数,而反向学习需要用到梯度,阶跃函数在很大情况下梯度为0,使损失函数的值不会有任何变化。
2.2.3代码实现
def sigmoid_function(x):return 1/(1+np.exp(-x))
2.3 ReLu函数
2.3.1概念
Sigmoid函数数学表达式如下:
h ( x ) = { x ( x > 0 ) 0 ( x ≤ 0 ) h(x)=\left\{ \begin{aligned} x (x>0) \\ 0 (x\le0) \\ \end{aligned} \right. h(x)={x(x>0)0(x≤0)
2.3.2图形
2.3.3代码实现
def relu_function(x):return np.maximum(0,x)
2.4 tanh函数
2.4.1概念
双曲线函数,和Sigmoid函数同为S形函数,但tanh函数关于原点(0,0)对称。而Sigmoid函数关于(0,0.5)对称。
h ( x ) = e x − e − x e x + e − x h(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} h(x)=ex+e−xex−e−x
其实
t a n h ( x ) = 2 ∗ s i g m o i d ( 2 ∗ x ) − 1 tanh(x)=2*sigmoid(2*x)-1 tanh(x)=2∗sigmoid(2∗x)−1
2.4.2图形
2.4.3代码实现
def tanh_function(x):return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
或者
def tanh_function(x):return 2*sigmoid_function(2*x)-1
总结
本节参考于斋藤康毅的两部作品及颠覆性军事技术-人工智能一书。
这篇关于深度学习-----学习笔记(二)(修仙~~~ing)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!