有个事情可能会让初学者惊讶:神经网络模型并不复杂!『神经网络』这个词让人觉得很高大上,但实际上神经网络算法要比人们想象的简单。
这篇文章完全是为新手准备的。我们会通过用Python从头实现一个神经网络来理解神经网络的原理。本文的脉络是:
介绍了神经网络的基本结构——神经;
在神经中使用S型激活函数;
神经网络就是连接在一起的神经;
构建了一个数据集,输入(或特征)是体重和身高,输出(或标签)是性别;
学习了损失函数和均方差损失;
训练网络就是最小化其损失;
用反向传播方法计算偏导;
用随机梯度下降法训练网络。
砖块:神经
首先让我们看看神经网络的基本单位,神经。神经接受输入,对其做一些数据操作,然后产生输出。例如,这是一个2-输入神经:
![]()
这里发生了三个事情。首先,每个输入都跟一个权重相乘(红色):
然后,加权后的输入求和,加上一个偏差b(绿色):
最后,这个结果传递给一个激活函数f:
激活函数的用途是将一个无边界的输入,转变成一个可预测的形式。常用的激活函数就就是S型函数:
![]()
S型函数的值域是(0, 1)。简单来说,就是把(−∞, +∞)压缩到(0, 1) ,很大的负数约等于0,很大的正数约等于1。
一个简单的例子
假设我们有一个神经,激活函数就是S型函数,其参数如下:
就是以向量的形式表示 。现在,我们给这个神经一个输入 。我们用点积来表示:
当输入是[2, 3]时,这个神经的输出是0.999。给定输入,得到输出的过程被称为前馈(feedforward)。
编码一个神经
让我们来实现一个神经!用Python的NumPy库来完成其中的数学计算:
隐藏层就是输入层和输出层之间的层,隐藏层可以是多层的。
br/>姓名 体重(磅) 身高 (英寸) 性别 Alice 133 65 F Bob 160 72 M Charlie 152 70 M Diana 120 60 F
br/>
img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0610%2F83a324a6j00sev5of001sd200u000d1g00it0085.jpg&thumbnail=660x&quality=80&type=jpg"/>
br/>
br/>姓名 体重 (减 135) 身高 (减 66) 性别 Alice -2 -1 1 Bob 25 6 0 Charlie 17 4 0 Diana -15 -6 1
br/>
blockquote id="2PATKSO3">我这里是随意选取了135和66来标准化数据,通常会使用平均值。
/blockquote>
br/>
br/>Name y_true
br/>y_pred
br/>(y_true - y_pred)^2
br/>Alice 1 0 1 Bob 0 0 0 Charlie 0 0 0 Diana 1 0 1
br/>
代码:一个完整的神经网络
我们终于可以实现一个完整的神经网络了:
姓名 身高 (减 135) 体重 (减 66) Gender Alice -2 -1 1 Bob 25 6 0 Charlie 17 4 0 Diana -15 -6 1![]()
随着网络的学习,损失在稳步下降。
![]()
现在我们可以用这个网络来预测性别了:
接下来?
介绍了神经网络的基本结构——神经;
在神经中使用S型激活函数;
神经网络就是连接在一起的神经;
构建了一个数据集,输入(或特征)是体重和身高,输出(或标签)是性别;
学习了损失函数和均方差损失;
训练网络就是最小化其损失;
用反向传播方法计算偏导;
用随机梯度下降法训练网络;
接下来你还可以:
用机器学习库实现更大更好的神经网络,例如TensorFlow、Keras和PyTorch;
其他类型的激活函数;
其他类型的优化器;
学习卷积神经网络,这给计算机视觉领域带来了革命;
学习递归神经网络,常用于自然语言处理;
作者:Victor Zhou
原文链接:https://victorzhou.com/blog/intro-to-neural-networks/
今天的文章 resnet网络作者(resnet1)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/47239.html