使用人工神经网络预测股票价格
《Python Machine Learning By Example》 Third Edition 第八章笔记
文章目录
- 1 本章内容介绍
- 2 从浅层神经网络到深度学习
- 2.1 神经层
- 2.2 激活函数
- 2.3 反向传播
- 2.4 深度学习
- 3 避免过拟合
- 知识补充
1 本章内容介绍
通过本章我们可以学习到:
- 从浅层神经网络到深度学习概要
- 激活函数
- Dropout和早停
2 从浅层神经网络到深度学习
- 首先介绍人工神经网络,即artificial neural networks (ANNs),脉络:网络中的各层–>激活函数–>反传。
2.1 神经层
- 一个简单的神经网络分为输入层,隐藏层,输出层,如下图所示:
- 每一层都是节点的概念集合,输入层表示特征,输出层表示目标变量,在二分类任务中,输出层可能是一个节点,表示目标为正例的概率;在多分类任务中,输出层可能有跟预测类别个数相同的节点,每个节点的值为该类的概率;在回归任务中,输出层只有一个节点,代表预测值。隐藏层可以看作一组从前一层抽取信息的节点组合。相邻的层间由一条被参数化的边相连,并传递信息,参数为wi,其中w的第一维大小是前一层神经元的个数,第二维则是后一层的神经元个数。
- 在简单的神经网络中,信息仅从输入层往输出层流动,叫做前馈神经网络。逻辑回归实际上就是一种仅有输入层和输出层的简单神经网络,而随着隐藏层的层数的增加,模型就越能学习到输入数据与目标值间的潜在关系。但是,增加隐藏层仅能加强模型的线性表达能力,而非线性表达能力不变,导致模型的上限不足,因此我们引入了激活函数。
2.2 激活函数
- 顾名思义,激活函数可以表示一个节点的激活程度。加入激活函数后,模型就具备了非线性的表达能力,而非线性神经网络被证实可以表示任何函数,神经网络中常见的激活函数有sigmoid(范围0-1),tanh(范围-1到1,也被认为是sigmoid的重新缩放版本)和ReLU(范围0-正无穷),如下图所示:
- 其中,重点是ReLU,因为它的函数特征很好,计算复杂度低,不需要计算指数。在SGD中的收敛速度比tanh和sigmoid快,且不会导致梯度饱和和梯度消失问题。不过缺点是它的函数不是0中心的,在一次更新中,所有参数的更新方向相同,即同为正或同为负(但实际上最优的方向可能是部分参数增加而部分参数减小),因此容易导致ZigZag现象;数据的幅度会随着层数增加而不断扩张;有些神经元可能不会被训练,梯度一直是0(负数部分)。Sigmoid本身是单调的,但是它的导数却不是,因此它容易被困在局部最优值。tanh是Sigmoid的优秀版本,部分地方的导数比Sigmoid大,它是0中心的,因此不会出现ZigZag现象,但是会出现梯度饱和现象以及存在计算复杂等问题。
- 总结来说,在隐藏层经常是使用ReLU,在ReLU表现不好时,也可以尝试Leaky ReLU(在负数部分引入了较小的斜率,如0.01),而Sigmoid和tanh也可以用在隐藏层,但不适合用于深层神经网络。在输出层,线性激活函数可以用于回归任务(因为我们不需要对输出进行任何转换),sigmoid可以用于二分类任务,softmax可以用于多分类任务。
2.3 反向传播
- 那么我们如何利用这些神经层和激活函数来学习到最优的参数呢?与逻辑回归那章类似,这里同样是用梯度下降法来最小化MSE损失,而与之前不同的是,参数的梯度是通过反向传播来计算的,即每次前向传播后,都会通过反向传播来更改参数值。
- 输出层的梯度最先被计算,输入层的梯度最后计算,所谓反传,意味着一层的梯度在计算前一层梯度时会被重复使用,具体地,计算遵循链式求导法则。
- ReLU在零点不可导,在反传中如何处理?特判一下,人为指定一个导数值,如0。
2.4 深度学习
- 在实际应用中,神经网络的隐藏层是非常多的,因此我们接着往网络中加入更多的层数,就来到了深度学习阶段。
- 层数增加了,自然网络学习数据中潜在关系的能力也增加了。
- 计算机视觉被广泛认为是通过深度学习取得巨大突破的一个领域,它的任务包括但不限于图像分类,基于图像的搜索引擎,机器视觉,图像修复等等。
- 自然语言处理则是另外一个深受深度学习模型影响的领域,它的任务有机器翻译,看图说话,情感分析等等。
3 避免过拟合
- 神经网络可以很好地适应各种复杂的数据,但是如果不加控制的话,很容易导致过拟合。有三种常见的方法:正则化,Dropout,早停。
- 1)Dropout意味着在训练阶段,忽略掉隐藏层中的某些结点,即每个结点根据所给定的概率(参数,常设为0.5)来决定是否保留自己。前馈时,被忽略的结点不参与loss的计算,反传时,被忽略的结点不更新参数。原理在于,通过让某些结点失活,可以阻断层与层间结点的相互依赖关系,避免网络变得更复杂。
- 2)早停,即early stopping,顾名思义,当模型无法再继续提升时,就提前停止训练。在每轮训练完,通过验证集来对模型的泛化性能进行评估,如果模型在验证集上的性能不再提升或者反而下降,则发送了过拟合,应及时停止训练。
知识补充
ZigZag现象:即函数值的总体下降方向虽然朝着最优下降方向,但是整个训练路径呈之字形弯折,导致下降缓慢。
使用人工神经网络预测股票价格相关推荐
- 神经网络可以用来预测吗,神经网络预测股票价格
利用BP神经网络预测股票价格走势 20 谷歌人工智能写作项目:神经网络伪原创 如何利用Python预测股票价格 预测股票价格没有意义写作猫.单支股票价格,多股组合,大盘这些都可以使用神经网络来学习,0 ...
- 人工神经网络预测血药浓度计算公式
BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...
- 如何用神经网络预测数据,人工神经网络分析方法
如何人工神经网络来预测下一个数值 newff函数建立BP神经网络,历史数据作为样本,例如前n个数据作为输入,输入节点为n.当前数据作为p,输出节点为1.隐层节点根据试凑法得到. 通过matlab的tr ...
- 基于人工神经网络的预测,神经网络做预测问题
如何人工神经网络来预测下一个数值 newff函数建立BP神经网络,历史数据作为样本,例如前n个数据作为输入,输入节点为n.当前数据作为p,输出节点为1.隐层节点根据试凑法得到. 通过matlab的tr ...
- 神经网络预测结果分析,神经网络怎么预测数据
神经网络为什么可以预测? 这个要视处理的问题而定,训练网络的样本是基于多少年的数据,相应预测的就是多少年的数据. 例如电力负荷预测,当进行的是短期负荷预测时,输入的样本为最近几日的负荷数据,那么预测的 ...
- 人工神经网络的应用实例,神经网络技术及其应用
matlab神经网络目前有什么具体的实际应用 MATLAB中文论坛2010年出过一本书,北航出版社的,叫<MATLAB神经网络30个案例分析(豆瓣)>.我觉得把它作为入门书挺好的,每一章配 ...
- 神经网络预测软件哪个好,神经网络预测软件下载
大神看看这是用的什么软件进行的神经网络预测,数据太清晰可见了 谷歌人工智能写作项目:神经网络伪原创 求matlab大神帮帮忙,做模糊神经网络预测 用matlabR2014a软件,可以进行BP模糊神经网 ...
- 人工神经网络在行人轨迹预测上的应用
简 介: 行人轨迹预测是缓解交通拥堵.优化智能汽车驾驶决策的重要依据,在自动驾驶和智慧交通上有着广泛的应用前景.但在交通场景中,行人的运动轨迹不仅会受到本身意图的影响,还会受到周围行人.车辆的影响,所 ...
- 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
人工神经网络(artificial neural networks,ANNs),是模拟生物神经网络进行信息处理的一种数学模型. 一.人工神经网络简介 更多关于神经网络的发展可以参考:人工神经网络简介_ ...
最新文章
- 土壤生物和生化专业委员会暨土壤生物与土壤健康研讨会(杭州5月8-11)
- Apache Flink 零基础入门(十三)Flink 计数器
- SpringBoot-开发小技巧
- oracle语句优化积累
- php环境Unknown column ‘*‘ in ‘field list‘解决方案
- python变量及其作用域,闭包
- kafka的docker文件
- RestEasy传值方式
- 通达信手机版分时图指标大全_手机炒股神器通达信公式手机版安装方法
- Sun Jan 29 14:34:06 格林尼治标准时间+0800 2012”解析
- python猴子偷桃问题_java猴子偷桃问题
- python12306买票_Python 使用 selenium 实现半自动购买12306火车票
- 魔镜连接本地mysql_打造属于你的树莓派“魔镜”—硬件篇
- EXCEL中发现不可读的内容。是否恢复此工作薄的内容?如果信任此工作薄的来源,请单击”是“
- 视频理解论文实验笔记2014-2022
- java 电话号码 打号_java电话号码怎么匹配?
- 基于朴素贝叶斯和LSTM的两种新闻文本分类方法
- 创建一个数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)
- 《一辈子够用的英语万用会话10000句》 PDF+MP3下载
- 怎样才能成为一名优秀的软件开发者