当前位置:   article > 正文

数学建模【神经网络】

数学建模【神经网络】

一、神经网络简介

机器学习与神经网络

  • 机器学习是一类实现人工智能的方法总称,让计算机模拟或实现人类的学习行为
  • 神经网络是实现机器学习的一种模型
  • 实现机器学习的模型还有支持向量机,决策树,朴素贝叶斯分类器等

神经网络能用来做什么

  • 已知7人的身高和体重,以及是否达到8岁的数据
  • 现在又来了个人,身高128cm, 体重24kg
  • 如何判断此人是否达到8岁?

什么叫做神经网络

  • 有现成的一组数据,既有其特征(自变量x,身高体重)也有其标签(因变量y,是否8岁了)
  • 找出特征和标签之间的“关系”(建立神经网络模型)
  • 从而利用该“关系”,把另一组特征对应的标签给求出来
  • 神经网络由多层的神经元(节点)构成,不同层之间的神经元通过权重连接
  • 隐藏层和输出层的神经元中有激活函数,收到的数据作为自变量,计算出结果
  • 计算出的结果与权重相乘后累加传递到下一层,或输出最终结果

二、适用赛题

预测类问题

  • 预测未来的结果,一般为回归问题,即输出值y是连续的
  • 美赛2022年C题比特币和黄金投资策略,LSTM(长短时记忆网络)进行预测
  • 短时交通流量预测(小波神经网络的时间序列)
  • 电力负荷预测(Elman神经网络,具有延时记忆,适合动态建模)

分类问题

  • 对现有的对象进行分类,一般为离散问题,即输出值y是有限个离散值
  • 美赛2021年C题黄蜂传播规律和目击准确性,卷积神经网进行图像识别
  • 人体肿瘤诊断(LVQ神经网络,无需数据预处理,微适合模式识别和优化)
  • 柴油机故障判断(SOM神经网络,适合需要聚类的问题)

评价类问题

  • 嘉陵江水质评价(模糊神经网络),高校科研能力评价(离散Hopfield神经网络)
  • 本质上与预测和分类相同,只不过题目问的是“评价结果”而已

先学会最基础的神经网络原理,遇到题目后再去翻书现学现用

注意事项

神经网络基本模型+其他模型=沃兹基胡硕德模型

  • 需要针对具体问题量身定做,而不是把神经网络当做万能模版
  • 不懂别乱用,否则将喜获成功参赛奖
  • 近些年数模竞赛中,神经网络等启发式算法出现了严重的滥用

举个例子:计算1+1=?

  • 正常做法:由数学公理可知,结果为2
  • 舍本逐末:基于蚁群算法优化BP神经网络求得近似解为1.9987

不是不能用,而是不要滥用!!!

三、原理讲解

注:因为在MATLAB中神经网络一般不需要自己写代码,MATLAB有自带的工具箱,可以构建神经网络,所以这里只对神经网络的原理做一些介绍。

还是以刚刚的问题为例子:景区规定8周岁以下儿童可半价票,如何根据一个人的身高和体重,判断其是否可以买半价票?

生物学的神经网络

  • 神经元树突收到输入信号
  • 信号刺激细胞核,达到阈值后会产生输出
  • 输出就是进一步的信号,传到下一个神经元

感知机模型:最简单的神经网络

  • 输入层:输入身高x1和体重x2
  • 激活函数:综合判断输入信号是否达到阈值
  • 输出层:激活函数的函数值就是输出值y

只有输入层和输出层的神经网络,称为感知机

问题:如何综合考虑身高(x1)和体重(x2),判断是否达到了8周岁(阈值b)
  • 结果只能有“未达到”和“达到”
  • 需要的函数值只有0和1,可用阶跃函数作为激活函数

其他的激活函数

怎样实现“综合考虑”?
  • 线性求和Σwixi(权重wi代表变量xi的重要性)
  • 求和意味着身高和体重(即所有变量)都考虑到了

如何根据“综合考虑”的结果进行判断?
  • 当设线性求和的结果足够大,与阈值的差值作为激活函数的自变量t = Σwixi - b

  • wi是第i个变量的权重,区分不同变量对结果的影响程度
  • 输入数据后,权重和阈值决定了输出结果

输出结果

  • 可能结果:t = Σwixi - b ≥ 0 ⟺ f(t) = 1 ⟺ “综合考虑”身高和体重超过了“阈值”
  • 感知机输出值为1,则判定此人达到了8周岁
  • 阈值b看作数值固定为-1的节点(即x3 = -1)的权重w3

神经网络的核心,就在于如何确定权重,以确保输出正确答案

基本模型:

  • xi为第i个已知的参数
  • y为待求的输出值
  • 该模型还需确定权值wi
问题转化:权值wi该怎么设定
  • 模型初始化时,wi随便设置个初始值
  • 学习:从已知数据中学得模型参数(确定权重wi)

本质:不断地更改权重wi,使得模型求出的预测值尽可能地接近真实值

  • Step1:模型初始化,人为设置权重wi初始值
  • Step2:搜集多个人的身高x1、体重x2和是否达到8周岁y的数据
  • Step3:将搜集到的x1和x2代入模型,求得估计值y
  • Step4:将模型求的估计值y与搜集到的实际值y比较,差别越小越好
  • Step5:直到满足终止条件,否则继续对权重wi进行优化,重复Step3到5
  • 终止条件:估计值和实际值的差值小到一定程度为止
问题转换:Step5中,如何对权重wi进行优化?

本示例以差值作为的模型好坏的评估指标,更常见的有均方误差、平方绝对误差等

总结:景区规定8周岁的儿童以下可买半价票。但儿童往往没有身份证,难以准确判断年龄,如何根据一个人的身高和体重,判断其是否可以买半价票?
  • 本题感知机:

  • 激活函数f的表达式已知,身高x1和体重x2已知,需要确定权重wi
  • 根据搜集到的训练数据集,不断优化权重wi
  • 直到达到终止条件后模型就建好了

问题:既然单层的感知机能解决问题,为什么常见的神经网络都是多层的?

更复杂的情况

  • 感知机只拥有输出层进行激活函数处理,若问题是线性可分的,则感知机一定会收敛
  • 非线性可分问题:异或问题,感知机无法收敛

总结
  • MATLAB和GitHub上都有现成的工具包,无需原创代码
  • 再复杂的神经网络,思路都可总结为以下三点:
  1. 搜集数据集(xi, y),将xi代入初始的神经网络模型,计算估计值yy
  2. 根据yy与y的差异不断更改权重wi,使其误差尽可能的小(梯度下降)
  3. 大量数据训练后,再输入新的数据x,模型就可以求出y用于分类/预测/评价了
  • 数据集是题目给的,或者自己搜集的,决定了整个模型的生死
  • 记得做好数据预处理(处理缺失值、异常值)

模型的泛化能力:确保模型真的能用

如何证明你建立的神经网络模型是靠谱的?

  • 留出法:将搜集到的数据划分为训练集、验证集和测试集
  • 训练集进行学习、训练参数(权重)
  • 验证集来检验性能(学习率等),以调整超参数或及时停止训练
  • 测试集给出客观的评价
  • (此外还有交叉验证法、自助法)

可能遇到的问题
  • 过拟合:把特殊当一般(见过的天鹅都是白的,就以为天鹅只有白色的)
  • 欠拟合:一般性质都没学好(“后浪”里讲述的都是年轻人,就以为年轻人都是后浪)

过拟合是因为“死记硬背”,欠拟合是因为“啥都不会”

过拟合的原因
  • 数据集有噪声(缺失值、异常值,无用特征等等)
  • 训练集的数据量不足(训练集的分布与总体样本的不一致)
  • 训练模型过度,导致模型非常复杂(完全拟合了训练集、无法接受新数据)
过拟合的解决方法
  • 尽量寻找更多的数据集,并做好预处理
  • 去除无用的特征(判断一个人是否达到8岁,与他鞋子的颜色无关)
  • 早停策略:在即将过拟合的时候立刻停止训练
  • 正则化策略:损失函数中加入惩罚项来降低模型复杂度,特征越多惩罚越大
欠拟合
  • 与过拟合相反,是由于训练不足造成的,可在模型中增加特征来增大网络复杂度

本篇帮大家快速了解神经网络的基本思想,避开了大量数学推理证明。对于做数模竞赛,先理解本篇讲的概念,然后学会使用MATLAB实现BP神经网络(不需要过于深究原理),等比赛时遇到赛题再去翻书查资料。机器学习/神经网络/深度学习背后的水很深,立志深耕该领域的话做好脱发的准备。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/144769
推荐阅读
相关标签
  

闽ICP备14008679号