西瓜书之神经网络

一,神经元模型

所谓神经网络

目前用得最广泛的一个定义是“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统真实世界物体所做出的交互反应”。

M-P神经元

M-P神经元:接收n个输入(通常是来自其他神经元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值θ进行比较(作减法),最后经过激活函数f(模拟“抑制"和“激活”)处理得到输出(通常是给下一个神经元)

神经元的基本形式:

1.png

 

 西瓜的一系列特征通过线性组合相加

 通过上述两种激活函数(activation function)——挤压函数(非线性模型)

来产生相应地输出。

  • 与线性分类十分相似,神经元模型最理想的激活函数也是阶跃函数,
  • 即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输出1,对应兴奋;
  • 若差值小于零则输出0,对应抑制。

但阶跃函数不连续,不光滑,故在M-P神经元模型中,也采用Sigmoid函数来近似,

 Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。

 将多个神经元按一定的层次结构连接起来,就得到了神经网络

它是一种包含多个参数的模型,比方说10个神经元两两连接,则有100个参数需要学习(每个神经元有9个连接权以及1个阈值),若将每个神经元都看作一个函数,则整个神经网络就是由这些函数相互嵌套而成。

 

二,感知机与多层网络

感知机(Perceptron)是由两层神经元组成的一个简单模型,但只有输出层是M-P神经元

即只有输出层神经元进行激活函数处理,也称为功能神经元;

输入层只是接受外界信号(样本属性)并传递给输出层(输入层的神经元个数等于样本的属性数目),而没有激活函数。

激活函数为sgn (阶跃函数)的神经元

 

 

 感知机的几何解释:

感知机学习策略

  • 假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实 例点完全正确分开的超平面。
  • 为了找出这样的超平面S,即确定感知机模型参数w和b,需要确定一个学习策略, 即定义损失函数并将损失函数极小化。
  • 损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数w和b的连续可导函数,不易优化,所以感知机采用的损失函数为误分类点到超平面的总距离。

 

可以把(bias)并到里面

 求解

已知损失函数的梯度:

 

 

 前馈网络:

由于像感知机这种单个神经元分类能力有限, 只能分类线性可分的数据集,

对于线性不可分的数据集则无能为力, 但是多个神经元构成的神经网络能够分类线性不可分的数据集(西瓜书上异或问题的那个例子),且有理论证明(通用近似定理):只需一个包含足够多神经元的隐层, 多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。
 

  神经网络既能做回归, 也能做分类, 而且不需要复杂的特征工程

要解决非线性可分问题,需考虑使用多层功能神经元.例如下图中这个简单的两层感知机就能解决异或问题.在下图a中,输出层与输入层之间的一层神经元,被称为隐层或隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元.

 

 常见的神经网络是形如下图所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接.这样的神经网络结构通常称为“多层前馈神经网络”

 其中输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元."连接权"以及每个功能神经元的阈值;神经网络“学”到的东西,蕴涵在连接权与阈值中.

三,误差逆传播算法(BP)icon-default.png?t=N6B9https://blog.csdn.net/NickHan_cs/article/details/112295451?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%AF%AF%E5%B7%AE%E9%80%86%E4%BC%A0%E6%92%AD%E8%AE%A1%E7%AE%97&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-0-112295451.268^v1^control&spm=1018.2226.3001.4450

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
西瓜书是《机器学习》这本教材的昵称,在这本书中作者使用Python语言进行代码实现。以下是关于西瓜书Python代码的回答: 西瓜书中的Python代码用于实现各种机器学习算法和相关实验。作者使用Python这一通用的高级编程语言,结合各种机器学习库,如Scikit-learn等,来实现算法。 例如,在第二章关于感知机的代码实现中,作者使用Python定义了一个类Perceptron,包含初始化函数、训练函数和预测函数。这些函数使用Python语法实现了感知机算法的各个步骤,如权重的初始化、正类和负类的划分、误分类点的更新等。通过调用这些函数,可以进行感知机的训练和预测过程。 同样,在后续的章节中,作者使用Python代码来实现了其他的机器学习算法,如k近邻算法、朴素贝叶斯等。通过这些代码实现,读者可以学习到如何使用Python实现这些算法,以及如何使用相关的库函数来简化实现过程。 此外,西瓜书中的代码还包括了一些实验演示,通过使用Python代码可以完成一些实验,如不同算法在一些数据集上的表现比较、参数调优等。这些实验可以帮助读者更深入地理解机器学习算法的原理和效果。 总而言之,西瓜书的Python代码是作者使用Python语言来实现机器学习算法和相关实验的一种方式,通过这些代码,读者可以学习并应用这些算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值