斯坦福CS231n作业代码(汉化)Assignment 1 - Q4

本文介绍了斯坦福大学CS231n课程的作业1,重点在于实现两层神经网络。内容涵盖神经元工作原理、神经网络的结构、反向传播算法,并详细讲解了训练神经网络的过程。通过代码实现,读者可以理解并应用到CIFAR-10数据集上,最终达到训练和测试神经网络的目的。
摘要由CSDN通过智能技术生成

CS231N - Assignment 1 - Q4 - Two-Layer Neural Network

编写:郭承坤 观自在降魔 Fanli SlyneD
校对:毛丽
总校对与审核:寒小阳

1 任务

在这个练习里,我们将实现一个完全连接的神经网络分类器,然后用CIFAR-10数据集进行测试。

2 知识点

2.1 神经元

要讲神经网络就得先从神经元开始说起,神经元是神经网络的基本单位,它的结构如下图所示:

Neuron

神经元不管它的名字有多逼格,它本质上不过是一个函数。就像每个函数都有输入和输出一样,神经元的输入是一个向量,里面包含了很多个 xi x i (图左边),输出的是一个值(图右边)。神经元在这个过程中只做了两件事:一是对输入向量做一次仿射变换(线性变化+平移),用公式表示就是

iwixi+b(1) (1) ∑ i w i x i + b
二是对仿射变换的结果做一次非线性变换,即
f(iwixi+b)(2) (2) f ( ∑ i w i x i + b )
这里的f就叫做激活函数。权值 wi w i 和偏置项 b b 是神经元特有的属性,事实上,不同神经元之间的差别主要就三点:权重值,偏置项,激活函数。总的来说,神经元的工作就是把所有的输入项 x i 与其对应的权值相乘求和,然后加上偏置项 b b ,之后通过一个激活函数求得最终的值,即这个神经元的输出。

激活函数有很多种,下面介绍一个叫sigmoid的激活函数:

(3) σ ( x ) = 1 / ( 1 + e x )

这个函数很有意思,它把任何一个属于值域R的实数转换成0到1之间的数,这使得概率的诠释变得可能。但是在训练神经网络的时候,它有两个问题,一是当输入的仿射变换值太大或者太小的时候,那f关于x的梯度值就为0,这不利于后面提到的反向传播算法中梯度的计算。第二个问题在于它的值不是中心对称的,这也导致梯度更新过程中的不稳定。Sigmoid的函数图像大概长下面这样:
Sigmoid

如果现在我们把实数1也放进输入的向量中得到 x⃗  x → ,把偏置项放进权值向量中得到 w⃗  w → ,那么包含sigmoid激活函数神经元的工作就可以简洁地表示为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值