从零开始的机器学习3-神经网络

从零开始的机器学习3-神经网络


对应周志华西瓜书第五章。

一些问题

1、试述常见的激活函数,试述将线性函数用作神经元激活函数的缺陷。
①阶跃函数;
②Sigmoid函数:
σ ( x ) = 1 1 + e − x , \sigma(x)=\frac{1}{1+e^{-x}}, σ(x)=1+ex1,
优点: ------
缺点: 1)会有梯度弥散; 2)不是关于原点对称; 3)计算exp比较耗时.


③Tanh函数:
t a n h ( x ) = 2 σ ( x ) ( 2 x ) − 1 , tanh(x)=2\sigma(x)(2x)-1, tanh(x)=2σ(x)(2x)1,
优点: 1)解决了原点对称问题; 2)比sigmoid函数快;
缺点: 1)会有梯度弥散.


④ReLU函数:
f ( x ) = max ⁡ ( 0 , x ) , f(x)=\max (0,x), f(x)=max(0,x),
优点: 1)解决了部分梯度弥散问题; 2)加快了收敛速度;
缺点: 1)梯度弥散未能完全解决; 2)负数部分相当于神经死亡, 且不会复活.


⑤Leaky ReLU函数:
f ( x ) = { x , ( x ≥ 0 ) x α , ( x &lt; 0 ) , f(x)= \begin{cases} x&amp;, (x\geq0)\\ \frac{x}{\alpha}&amp; ,(x&lt;0) \end{cases}, f(x)={xαx,(x0),(x<0),
优点: 1)解决了神经死亡问题.
缺点: ----------


⑥Maxout:
max ⁡ ( w 1 T x + b 1 , w 2 T x + b 2 ) \max(w_1^Tx+b_1,w_2^Tx+b_2) max(w1Tx+b1,w2Tx+b2)
优点: 1)克服了ReLU的缺点;
缺点: 1)参数较多.


线性函数用作神经元激活函数的缺陷:
无论多少层的神经网络会退化成一个线性回归.

2、试述使用sigmoid激活函数的神经元与对数几率回归的联系。
两者都是希望将连续值映射到{0,1}上,但由于阶跃函数不光滑,不连续的性质,所以才选择了sigmoid作为映射函数。不同之处在于激活函数不一定要使用sigmoid,只要是非线性的可导函数都可以使用。
3.、对于图5.7(102页)中的 ,试推导出BP算法中的更新公式5.13(103页)。
− ∂ E k ∂ v i h = − ∂ E k ∂ b h ∂ b h ∂ a h ∂ a h ∂ v i h ∂ a h ∂ v i h = x i e h = − ∂ E k ∂ b h ∂ b h ∂ a h \begin{aligned} -\frac{\partial E_k}{\partial v_{ih}} &amp; =-\frac{\partial E_k}{\partial b_h}\frac{\partial b_h}{\partial a_h}\frac{\partial a_h}{\partial v_{ih}}\\ \frac{\partial a_h}{\partial v_{ih}} &amp; = \bm{x}_i\\ \bm{e}_h &amp; =-\frac{\partial E_k}{\partial b_h}\frac{\partial b_h}{\partial a_h} \end{aligned} vihEkvihaheh=bhEkahbhvihah=xi=bhEkahbh
可推出更新公式: v e h x i \bm{ve_hx}_i vehxi
4、试述标准BP算法和累计BP算法,试编程实现标准BP算法和累计BP算法,在西瓜数据集3.0(84页)上分别用这两个算法训练一个单隐层神经网络,并进行比较。
见下节
5、试述如何缓解BP神经网络的过拟合现象。
由于 BP(BackPropagation) 神经网络具有强大的表示能力,PB神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略常用来缓解BP网络的过拟合:
早停 (early stopping): 将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
正则化 (regularization): 其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。仍令 E k E_k Ek表示第 k k k个训练样例上的误差, w i w_i wi表示连接和阈值,则误差目标函数改变为:
E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 , E=\lambda\frac{1}{m}\sum^m_{k=1}E_k+(1-\lambda)\sum_i w_i^2, E=λm1k=1mEk+(1λ)iwi2,
式中 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1),用于对经验误差与网络复杂度两项进行折中,常通过交叉验证法来估计。
6、试述RBF网络,RNN循环神经网络的概念和特点。
径向基函数网络(Radial Basis Function,RBF)
RBF网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元的激活函数,而输出层则是对隐层神经元输出的线性组合。
设输入为 d d d向量 x \bm{x} x,输出为实数,RBF可表示如下:
φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) , \varphi(\bm{x})=\sum_{i=1}^q w_i\rho(\bm{x},c_i), φ(x)=i=1qwiρ(x,ci),
式中, q q q为隐层神经元个数, c i c_i ci w i w_i wi分别表示第 i i i个隐层神经元对应的中心和权重, ρ ( x , c i ) \rho(x,c_i) ρ(x,ci)为径向基函数, 其为某种沿径向对称的标量函数, 通常可以定义样本 x x x到数据中心 c i c_i ci之间欧氏距离的单调函数, 一种常用的RBF计算公式如下:
ρ ( x , c i ) = e β i ∣ ∣ x − c i ∣ ∣ 2 \rho(x,c_i)=e^{\beta_i||x-c_i||^2} ρ(x,ci)=eβixci2


②递归神经网络(Recurrent neural networks, RNN)
与前馈神经网络不同,RNN允许网络出现环形结构,可让一些神经元的输出反馈回来作为输入信号,也就是网络在 t t t时刻的输出状态不仅和输入有关,还和 t − 1 t-1 t1时刻的网络状态有关,从而能处理与时间有关的动态变化。
Elman 网络是最常用的递归神经网络之一,其结构与多层前馈网络相似,但隐层神经元的输出被反馈回来,与下一时刻的输入层神经元提供的信号一起,作为隐层神经元下一时刻的输入。隐层神经元通常采用 SigmoidSigmoid 激活函数,而网络的训练则常通过推广的BP算法进行。

7、试述卷积神经网络的卷积、下采样(池化)过程,试述卷积神经网络的架构,如图5.15(114页)。
输入层: 1个32*32图片
⇓ \Downarrow 采用5*5的卷积核
卷积层1: 6个28*28的矩阵
⇓ \Downarrow 采用2*2的采样
采样层1: 6个14*14的矩阵
⇓ \Downarrow 采用5*5的卷积核
卷积层2: 16个10*10的矩阵
⇓ \Downarrow 采用2*2的采样
采样层2: 16个5*5的矩阵
⇓ \Downarrow 采用5*5的卷积核
卷积层3: 长度为120的向量
⇓ \Downarrow 全连接
连接层: 长度为84的向量
⇓ \Downarrow 全连接
输出层: 长度为10的向量(原问题为10分类问题)

8、kaggle比赛入门-手写数字识别,下载数据和代码,仔细阅读代码并详细标注代码注释。
见下节

一些Python实现

BP神经网络

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
从零开始学习人工智能,以下是一些建议和步骤: 1. 入门阶段:首先,你可以选择阅读一些经典的人工智能教材,比如《Artificial Intelligence: A Modern Approach (AIMA)》\[2\]。这本书提供了人工智能领域的概述和基本概念的解释。 2. 学习Python:学习机器学习的基础是掌握Python编程语言。Python在机器学习领域被广泛使用,因为它提供了很多便利和高效的工具库。你可以通过在线教程或者参加课程来学习Python。 3. 数据处理:在学习机器学习之前,建议先学习数据处理的算法库,如NumPy和Pandas。这两个库对于数据整理和处理非常重要,掌握它们可以帮助你更好地理解和处理数据。 4. 学习传统机器学习算法:在掌握Python和数据处理之后,你可以开始学习传统的机器学习算法。这些算法包括线性回归、多项式拟合、最小二乘法拟合、分类、聚类、决策树、随机森林、支持向量机、朴素贝叶斯等等。理解这些算法的原理对于后续学习深度学习非常重要。 5. 深度学习:一旦你掌握了传统机器学习算法,你可以开始学习深度学习。深度学习是人工智能领域的热门技术,它使用神经网络模型来解决复杂的问题。你可以学习深度学习的基本原理、常用的深度学习框架(如TensorFlow、PyTorch)以及一些常见的深度学习模型(如卷积神经网络、循环神经网络)。 总结起来,从零开始学习人工智能需要掌握Python编程语言、数据处理算法库、传统机器学习算法和深度学习。这个过程需要耐心和持续的学习,同时也可以参加一些在线课程或者参考相关的书籍和教材来加深理解。希望这些建议对你有所帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [如何从零开始学习人工智能](https://blog.csdn.net/weixin_45081640/article/details/117453685)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [初学者如何从零开始学习人工智能?看完你就懂了](https://blog.csdn.net/sd19871122/article/details/60955281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值