大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
本人正在学习《deep learning with python》–Jason Brownlee,有兴趣的可以一起学习。
仅供学习参考,不做商用!
大家好,我技术人Howzit,这是深度学习入门系列第一篇,欢迎大家一起交流!
深度学习入门系列1:多层感知器概述
深度学习入门系列2:用TensorFlow构建你的第一个神经网络
深度学习入门系列3:深度学习模型的性能评价方法
深度学习入门系列4:用scikit-learn找到最好的模型
深度学习入门系列5项目实战:用深度学习识别鸢尾花种类
深度学习入门系列6项目实战:声纳回声识别
深度学习入门系列7项目实战:波士顿房屋价格回归
深度学习入门系列8:用序列化保存模型便于继续训练
深度学习入门系列9:用检查点保存训练期间最好的模型
深度学习入门系列10:从绘制记录中理解训练期间的模型行为
深度学习入门系列11:用Dropout正则减少过拟合
深度学习入门系列12:使用学习规划来提升性能
深度学习入门系列13:卷积神经网络概述
深度学习入门系列14:项目实战:基于CNN的手写数字识别
深度学习入门系列15:用图像增强改善模型性能
深度学习入门系列16:项目实战:图像中目标识别
深度学习入门系列17:项目实战:从电影评论预测情感
深度学习入门系列18:循环神经网络概述
深度学习入门系列19:基于窗口(window)的多层感知器解决时序问题
深度学习入门系列20:LSTM循环神经网络解决国际航空乘客预测问题
深度学习入门系列21:项目:用LSTM+CNN对电影评论分类
深度学习入门系列22:从猜字母游戏中理解有状态的LSTM递归神经网络
深度学习入门系列23:项目:用爱丽丝梦游仙境生成文本
文章目录
虽然人工神经网络刚开始学习时有点难,但是它仍是一个令人着迷的研究领域。在描述整个领域的数据结构和算法时,使用了许多术语。在这节课,你将带你快速学习多层感知器人工神经网络领域所使用的术语以及过程。完成课程后,你将了解:
- 构建神经网络块,包括神经元,权重和激活函数。
- 如何在层中使用构建块创建网络。
- 如何从样本数据训练网络
让我们开始吧
1.1 概述
在这节课,我们将涵盖很多方面:
- 多层感知器
- 神经元,权重和激活函数
- 神经元网络
- 训练网络
我们将从多层感知器概述开始。
1.2 多层感知器
在它成为最具有使用价值的神经网络之前,人工神经网络领域经常被叫做神经网络或者多层感知器。一个感知器是一个单神经元模型,它是大型神经网络的前生。这个领域主要研究如何使用生物大脑的简单模型解决复杂计算任务,就像我们看到机器学习中看到预测模型任务一样。其目标不是构建一个真是人脑模型,而是开发一个鲁棒性更高的算法和数据结构,能够对复杂问题进行建模。
神经网络的力量来自于从训练集中学习表示(presentation)的能力,并如何更好的将我们想预测的输出变量与之关联起来。从某种意义上讲,神经网络学习是一种映射关系。从数学的角度,它能够学习任意映射函数,并被证明是一个广泛的近似算法。神经网络模型的预测能力来自于网络的层级或者多层结构。这种数据结构能够在不同大小或者分辨率中挑选出(学习表示)特征并把他们组成高阶的特征。例如,从线到线的集合,到图形。
1.3 神经元
对于神经网络,其组成部分是人工神经元,每个人工神经元,我们称之为计算单元,这些简单计算单元由带有权重的输入信号和使用激活函数的输出信号组成。
1.3.1 神经元权重
你可能比较熟悉线性回归,上面的例子中,输入端的权重和归回等式中的系数非常的类似。
你可以理解为一元一次函数:y=ax+b
如线性回归,每个神经元都有一个偏置常数,这个常数在输入端始终是1.0并且它也必须加权。
例如,一个神经元有两个输入端,这种情况需要三个权重,每个输入端对应一个,另外一个对应是偏置常数。
犹如:y=ax+bz+c,其中c为偏置常数,a,b为权重,x,z为输入端
虽然有复杂的初始化模式可用,但是权重一般还是被随机初始化一个很小的值,一般在0-0.3之间。如线性模型,大权重会增加了模型的复杂度和脆弱性,因此在网络中使用小权重和正则化技术是明智的选择。
1.3.2 激活函数
将输入端进行加权求和并传入激活函数又称之为转换函数。激活函数是一个从加权输入求和到神经元输出的简单映射,它被叫做激活函数,是因为它管理着神经元被激活和输出信号强度的阈值。例如,阈值0.5,如果输出之和高于阈值,神经元输出输出求和为1.0,否则输出为0.0。
从传统方法的来看,也可以使用非线性激活函数,它让网络以更为复杂的方法把输入端组合起来,反过来,它们可以在构建的函数上提供更丰富的能力。非线性函数像逻辑函数叫做sigmod函数,它是s形分布,输出值在0-1之间,还有双曲正切函数称之为Tanh,也是同样的分布,范围在-1和1之间。最近整流器(rectifier)激活函数展示出更好的效果。
1.4 神经元网络
神经元组成了神经元网络。每一行神经元称之为一层,而一个网络又多层。在网络中神经元的结构经常被称之为网络拓扑结构。
1.4.1 输入层/可见层
输入数据集的底层称之为可见层,因为它直接暴露神经网络的一部分。一个神经网络的可见层通常由神经元输入值或者数据集中的列组成。这些神经元与上面描述的神经元不同,只是将输入值传递给下一层。
1.4.2 隐藏层
在输入层后面的层是隐藏层,因为他们没有直接接触输入端。最简单网络结构是在隐藏层中有一个神经元并直接输出一个值。鉴于计算力和有效库增多,可以构建非常深的神经网路。深度学习指的是有多层隐藏层的神经网络。他们很深,因为训练时慢的超乎你的想象,但是使用现有技术和硬件可能只需几秒或者几分钟就能完成。
1.4.3 输出层
最后的隐藏层叫做输出层并负责输出对应问题格式的值或者向量。在输出层激活函数的选择与你建模问题的类型是强相关。例如:
- 回归问题有一个单个输出神经元并且这个神经元没有激活函数。
- 一个二分类问题有个一个单输出神经元,使用的 sigmoid 激活函数,输出一个0-1之间值,其值代表预测主类的概率。
- 多分类问题在输出层有多个神经元,一个代表一个类(如,在著名的iris花分类问题上,三个分类,有三个神经元)。在这个例子中,使用softmax函数来输出网络的概率,用于每个类的值。选择最高概率值就是crisp类的值
1.5 训练网络
神经网络一旦配置好了,就可以在数据集上训练。
1.5.1 准备数据
为了训练神经网络,你必须要准备好训练的数据。数据必须是数字的,如实数。如果有分类数据,如性别属性,男和女,那么你可以把它转成实数表示,这个过程称之为 one-hot 编码。为每类新增一列(男女两列)而且根据行的类型为每行添加0或者1。
这种one-hot 编码也同样应用在多分类问题的输出变量上。这能够创建一个单列的二维向量,这样更容易直接和网络输出层的神经元做对比,正如上面描述的,为每个类输出一个值,而神经网络需要对输入端进行调整。你可以重新将输入端的值调整在0-1之间,这过程称之为正则化(normalization)。另外一项流行的正则化技术是每列遵循均值为0,标准差为1的分布。正则化技术也能应用于图像数据,以及其他数据,如能够转化为整数的单词,数据集中的单词频率。还有其他编码技术。
1.5.2 随机梯度下降
经典且首选的神经网络训练算法就是随机梯度下降算法。这是一行数据作为神经网络输入的地方。神经网络向上处理输入的神经元,它最终产生一个输出值。这叫做神经网络前向传输。这个传输过程也会在被训练的网络使用,目的是在新数据上做预测。
神经网络输出值和期望值作比较,并计算误差。这个误差通过网络反向传回去,一次一层,根据他们贡献错误的总和来更新权重。这个聪明的数学运算被称为反向传播算法。这个过程在训练集上不断重复。整个训练集更新一次叫做一次迭代。一个神经网络可能训练几十代,几百代,或成千代。
1.5.3 权重更新
神经网络的权重更新来自于每次训练对样本误差的计算。这叫做在线学习。这会导致网络变化快但混乱,或者保存所有的训练样本过程中的误差并在最后更新神经网络。这叫做批量学习,更平稳。因为数据集如此大,并且由于计算效率,在更新之前网络的样本数量,批量大小通常减少到少量,如成百或者成千个样例。权重总和的更新是由一个配置参数学习速率控制的,它也叫作步长,控制神经网络权重误差的步长或者变化。学习速度一般是0.1或则0.01或者更小。更新等式可以通过其他配置来补充。
- 动量 是融合了先前重量更新的属性,即使在计算的误差较少时,也允许权重在相同方向上继续变化。
- 学习速度衰减 用于随着不断的迭代减少学习速率大小,以至于在开始训练时有更大的权重修改,在后期对权重进行精细的调整。
1.5.4 预测
一旦神经网络被训练好,他就能用于预测。你可以在测试或则验证数据上预测,为了估计在未标记数据上模型的能力。你可以部署它并用它不断做预测。所有来自模型的网络拓扑结构和最后权重集合都需要保存。通过向网络提供输入并执行前向传播来进行预测,从而允许它生成可用作预测的输出。
1.6 总结
在本课程中,您学习了用于机器学习的人工神经网络。你已经学的:
- 神经网络不是人脑模型,而是解决复杂机器学习问题的计算模型。
- 神经网络是由带有权重和激活函数的神经元组成的。
- 神经网络是由神经元层组织而且采用随机梯度进行训练的。
- 在训练一个神经网络前要提前准备好数据。
1.6.1 接下来
你现在已经了解到神经网络模型的基本知识,在接下来的部分,你将首先用keras构建第一个多层感知器。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194172.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...