神经网络
一、什么是神经网络?
- 神经网络是具有适应性的简单单元组成的广泛并行互连的网络。
- 机器学习把神经网络当做一个学习算法,通过数据,学习出模型。研究的是神经网络学习,属于连接主义学习。
- 神经网络模型两个最重要的要素是:网络结构、神经元模型。
二、简单单元,神经元模型
- 神经元传送的是电位,当累计电位超过阈值时,神经元被激活,产生输出,由f函数来处理。
- x是神经元信号,w进行放大,将全部的 x*w 累加,超过原来的阈值 θ,就用f函数处理,输出y。
- 需要学习的参数: w 和 θ, 和线性模型一样,不考虑 f 函数就是一个线性模型,考虑 f 函数的话,就能处理非线性问题,就需要用到神经元的激活函数。
三、神经元的 “激活函数”
- 激活函数,activation function, 也叫做响应函数,挤压函数。
- 理想激活函数是阶跃函数, 0 表示抑制神经元而1表示激活神经元 。
- 阶跃函数具有不连续,不光滑等不好的性质,常用的是Sigmoid函数。
- Sigmoid函数表示的是正负几率的乘积
四、多层前馈网络结构
4.1、概念:
- 目前神经网络最常用的网络结构是多层前馈网络。
- 多层网络:包含隐层的网络
- 前馈网络:神经元之间不存在同层连接也不存在跨层连接
- 隐层和输出层神经元亦称“功能单元” (Functional Unit)
- 前馈神经网络可以用BP算法优化。
4.2、万有逼近性:
- 多层前馈网络有强大的表示能力称为神经网络的万有逼近性。
- 仅需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。
- 具有万有逼近性的模型包括:泰勒展开,傅里叶变换,决策树等。
- 具有万有逼近性是将神经网络做为机器学习模型的前提,而不是神经网络独有的性质。
4.3、问题
如何设置隐层神经元数是未解问题(Open Problem),实际常用 “试错法”。
五、BP算法
5.1、BP算法概念:
- BackPropagation 误差逆传播算法,简称BP算法。
- BP算法是迄今最成功,最常用的神经网络算法。正式完整描述最早出现在1974年Werbos的博士学位论文中。
- BP是一个迭代学习算法,在迭代的每一轮中采用广义感知机学习规则 v ← v + △v
- BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
- BP算法适用于平方损失等许多常用损失函数。
5.2、BP算法推导:
链式法则:
5.3、优化思路:
- 得到误差后,要调整误差,就对误差求偏导。如果是凸函数的话,求导,令导数为0,求得极值点 ,如果不是凸函数的话,就用梯度下降法。
- 求导是明确了误差调整的方向,每次走多少,由学习率参数 η 决定。
- 学习率(步长)不能太大,太大容易产生震荡现象,也不能太小,太小可以较好的避免震荡现象,但是训练速度太慢,最好的方式是,先大步走,后小步走。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf