100天搞定机器学习|Day35 深度学习之神经网络的结构

简介: 100天搞定机器学习|Day35 深度学习之神经网络的结构

这集Grant大佬假设大家都没有神经网络的基础,为新手讲解神经网络基本概念,让大家再听说神经网络学习的时候,可以明白究竟是什么意思。大佬选择经典的多层感知器(MLP)结构解决手写数字识别问题,理由是理解了经典原版,才能更好地理解功能强大的变种,比如CNN和LSTM。


首先看看神经元和他们是怎么连接的


神经元可以理解为一个装着0到1之间数字的容器。以28*28输入图像每一个像素为例,每一个原点都是一个神经元,其中数字代表对于像素的灰度值,0表示纯黑,1表示纯白,这个数字在神经网络里称作“激活值”。


640.jpg


这784个神经元就组成了网络的第一层,最后一层的十个神经元代表0-9这十个数,同样的,他们的激活值也在0-1之间,代表了输入图像对应哪个数字的可能性。网络中间层被称为隐含层,可以看做黑箱,数字识别的具体工作就在这里完成,这里加了两层隐含层,每层有16个神经元——随便设置的,只是为了显得好看,后期还可以再调整。


640.jpg


神经网络处理信息的核心机制正是如此,一层的激活值通过一定的运算,得出下一层的激活值。上面也提到784个神经元代表的是数字图案,那么下一层激活值也会产生某些特殊的图案,最终在输出层最亮的神经元表示神经网络的选择。


640.jpg


我们再看看如何训练,为什么这种层状结构就能识别数字呢?


我们可以把数字进行拆解,理想状况下希望倒数第二层的各个神经元可以分别对应上一个笔画。


640.jpg


再来看隐含层第一层,当输入为9或8的上面带圈的数字时,某个神经元的激活值就会接近1,希望所有这种位于图像顶部的圆圈图案都能点亮这个神经元,这样,从第三次到输出层,我们只需要学习哪些部件能组合出哪个数字即可。


640.jpg



但是如何识别圆圈呢?同理可以把它拆分成更细微的问题。


640.jpg


于是我们希望网络第二层的各个神经元对应这些短边,第二层就能把所有关联短边的八到十个神经元都点亮,接着就能点亮对于顶部圆圈和长竖条的神经元。


640.png


然后我们看看连线的作用


如何让第二层(隐含层的第一层)中的这一个神经元能够能够识别出图像的这一块区域是否存在一条边?


640.jpg


我们设计让第二层的某一个神经元能正确识别图像中的这块区域里是否存在一条边。


640.jpg


我们拿出第一层(输入层/第0层)的激活值,并赋上权重(要关注区域的权重为正值,否则为0),这样对所有像素值求加权和,就只会累加关注区域的像素值了。


640.jpg



绿色为正值,红色为负值,颜色越暗表示权重越接近0


640.jpg


所以想要识别是否存在一条边,只需要给周围一圈的像素都赋予负权重


640.jpg


计算的加权值可以使任意大小的


640.jpg


但是我们需要的是将其压缩到0-1之间


640.jpg


这里就需要Sigmoid函数了,这就是激活函数。


640.jpg


激活值实际上就是一个对加权之和到底有多正的打分,但是有时加权之和大于0时,也不想点亮神经元,比如想要加权和大于10时才让他激发,这里就还需要加上一个偏置值,保证不随便激发。


640.jpg


权重告诉我们第二个神经元关注什么样的像素图案

bias告诉我们加权和要多大才能让神经元的激发有意义


640.jpg


这里有13000多个参数需要调整,所以这里所谓的学习就是找到正确的权重和偏置。刚开始讲到我们把神经元看作是数字容器,但是这些数字取决于输入的图像,所以把神经元看过一个函数才更准确,它的输入是上一层所有神经元的输出,它的输出是一个0-1之间的值。其实整个神经网络也是一个函数,输入784个值,输出10个值。不过它是一个包含了13000个权重、偏置参数的极其复杂的函数。


640.jpg

640.png


需要注意的是,机器学习尤其是神经网络运算与线性代数是密不可分的,之前有过介绍,请移步:


640.jpg


神经网络中需要大量的矩阵乘法和sigmoid映射运算


640.jpg


这种运算方式,非常适合编程,比如可以用Python的numpy很简单的实现。


640.jpg


最后需要一提的是,现在神经网络基本不再使用sigmoid了,比较流行的是ReLU(线性整流函数)。


640.jpg


end



100天搞定机器学习|Day36,我们将进行下一节,讲一下神经网络是如何通过数据来获得合适的权重和偏置的,敬请期待!

相关文章
|
10月前
|
机器学习/深度学习 人工智能 运维
网管不再抓头发:深度学习教你提前发现网络事故
网管不再抓头发:深度学习教你提前发现网络事故
246 2
|
11月前
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
584 0
|
6月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
9月前
|
机器学习/深度学习 人工智能 算法
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
376 68
|
机器学习/深度学习 编解码 TensorFlow
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
684 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
|
8月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
机器学习/深度学习 自动驾驶 计算机视觉
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
613 61
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
|
12月前
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
470 8
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
698 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能