当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-26 11:49:25 Python

100天搞定机器学习|Day1数据预处理100天搞定机器学习|Day2简单线性回归分析100天搞定机器学习|Day3多元线性回归100天GetMachineLearning|Day4-6LogisticRegressionGetMachineLearning100天|Day7K-NNGetMachineLearning100天|Day8逻辑回归数学原理GetMachineLearning100天|Day9-12SupportVectorMachine100天搞定机器学习|Day11实现KNN100天搞定机器学习|Day13-14SVM实现100天搞定机器学习|Day15朴素贝叶斯100天搞定机器学习|Day16SVM100天搞定机器学习内核技术|Day17-18神奇逻辑回归100天机器学习|Day19-20加州理工学院公开课:机器学习与数据挖掘100天机器学习|Day21BeautifulSoup100天机器学习|Day22机器为什么能学习?机器学习100天搞定|Day23-25决策树与Python实现机器学习100天搞定|Day26-29线性代数精髓机器学习100天搞定|Day30-32微积分精髓搞定100天搞定机器学习|Day33-34RandomForest本文是3Blue1Brown的《What is a Neural Network?》学习笔记观看地址:bilibili.com/video/av15532370Grant这一期假设大家没有神经网络基础,讲解基础新手神经网络的概念,让大家再听神经网络学习的时候,就能明白它的意思。老板选择了经典的多层感知器(MLP)结构来解决手写数字识别问题。原因是只有理解了经典的原版,才能更好的理解强大的变体,比如CNN、LSTM。先看神经元及其连接方式神经元可以理解为一个容器,里面装着0到1之间的数字。以28*28的输入图像的每个像素为例,每个原点都是一个神经元,其中的数字代表灰度值的像素,0表示纯黑,1表示纯白,这个数字称为“激活值”。这784个神经元构成了网络的第一层。最后一层的十个神经元代表十个数字0-9。同样,它们的激活值也在0-1之间,代表输入图像。对应于多少种可能性。网络的中间层称为隐藏层,可以看作是一个黑盒子。数字识别的具体工作到这里就完成了。这里增加了两层隐藏层,每层有16个神经元。看起来不错,你可以稍后调整它。神经网络处理信息的核心机制就是这样。计算一层的激活值,得到下一层的激活值。上面也提到784个神经元代表数字模式,那么下一层的激活值也会产生一些特殊的模式,最后输出层最亮的神经元代表神经网络的选择。我们再看看怎么训练,为什么这个分层结构可以识别数字呢?我们可以分解数字。理想情况下,我们希望倒数第二层的每个神经元都能对应到上一个笔划。让我们看一下隐藏层的第一层。当输入为9或8时,某个神经元的激活值会接近1。我希望图像顶部的所有圆圈图案都能点亮这个神经元,这样,从第三层到输出层,我们只需要了解哪些部分构成哪些数字。但是如何识别圈子呢?同样,它可以分解成更细微的问题。所以我们希望网络第二层的每个神经元对应这些短边,第二层可以点亮所有与短边相关的八到十个神经元,然后点亮顶圈和长边的神经元垂直条。神经元。那我们看看connection的作用是如何让第二层(隐藏层的第一层)的这个神经元能够识别图像的这个区域是否有边缘的?我们设计第二层的某个神经元可以正确识别图像中这个区域是否有边缘。我们取出第一层(输入层/第0层)的激活值,并赋予其权重(需要关注的区域权重为正,否则为0),使得所有像素值的加权和只会累积Focus区域的像素值。绿色是正值,红色是负值,颜色越深,权重越接近0。所以如果要识别是否有边缘,只需要给周围的像素赋予负权重即可。计算出的权重值可以做任意大小但是我们需要的是将它压缩到0-1之间,这里就需要Sigmoid函数,也就是激活函数。激活值其实是加权和正向的一个分数,但是有时候当加权和大于0的时候,你就不想点亮神经元了。比如你想在加权和大于10的时候激活它,加一个偏置值保证它不是随便兴奋的。权重告诉我们第二个神经元关注的像素模式。偏差告诉我们加权和需要多大才能使神经元有意义地激发。需要调整的参数有13000多个,所以这里所谓的学习就是找到正确的weight和bias。地方。一开始我们说我们把神经元看成数字容器,但是这些数字依赖于输入图像,所以把神经元看成一个函数更准确。它的输入是上一层所有神经元的输出,它的输出是0-1之间的一个值。其实整个神经网络也是一个函数,输入784个值,输出10个值。然而,它是一个极其复杂的函数,包含13,000个权重和偏差参数。需要注意的是,机器学习,尤其是神经网络运算,与线性代数密不可分。之前介绍过,请移步:100天搞定机器学习|Day26-29线性代数精髓神经网络需要大量的矩阵乘法sigmoid映射运算的运算方式非常适合编程,比如用Python的numpy就可以轻松实现。最后要提的是神经网络基本不再使用sigmoid,比较流行的是ReLU(线性整流函数)。