首页 / 资讯中心 / 文章详情

一文搞懂深度学习

一文搞懂深度学习 ★ FEATURED ARTICLE
目录一、 什么是机器学习和深度学习机器学习Machine Learning深度学习Deep Learning关键区别关系总结二、 神经网络基础1. 基本结构2. 工作原理3. 关键类型4. 训练流程5. 核心优势与挑战6. 神经网络基础理解例子7. 神经网络整体架构理解三、卷积神经网络CNN1. 核心组件2. 工作原理3. 典型结构4. 优势与挑战四、循环神经网络RNN1. 基本结构2. 训练过程3. 变体4. 应用5. 代码示例总结五、对抗生成网络GAN基本原理损失函数应用领域六、Keras实战前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站 https://www.captainbed.cn/clu。本文旨在一文整理输出深度学习相关的知识暨笔记以供深度学习入门同学快速取阅。部分内容基于视频教程整理同时在此感谢原作者分享。一、 什么是机器学习和深度学习机器学习Machine Learning和深度学习Deep Learning是人工智能领域的核心技术以下是它们的核心概念和区别机器学习Machine Learning定义机器学习是一种通过数据训练模型使计算机系统自动学习规律并做出预测或决策的技术。它不依赖明确的编程指令而是通过算法从数据中提取模式。核心特点算法多样性包括线性回归、决策树、支持向量机SVM、随机森林等。数据驱动依赖结构化数据如表格数据进行训练。应用场景分类如垃圾邮件识别预测如股票价格趋势推荐系统如电商推荐商品典型方法监督学习有标签数据如分类、回归无监督学习无标签数据如聚类强化学习通过反馈优化决策如游戏AI局限性处理复杂非线性问题如图像识别时效果有限。依赖人工特征工程需手动提取数据特征。深度学习Deep Learning定义深度学习是机器学习的一个子领域核心是使用多层神经网络Deep Neural Networks自动学习复杂特征。它模仿人脑的分层信息处理机制。核心特点神经网络结构包含输入层、隐藏层多层、输出层通过神经元连接传递信息。自动特征提取无需人工设计特征模型直接从原始数据如图像像素学习高阶特征。应用场景图像识别如人脸检测、自动驾驶、视觉任务自然语言处理如机器翻译、文本理解语音识别如智能助手典型模型卷积神经网络CNN专用于图像处理通过卷积层提取空间特征。循环神经网络RNN处理时序数据如文本、语音。Transformer基于注意力机制用于自然语言处理如GPT模型。优势与挑战优势处理高维度、非结构化数据如视频效果显著。挑战需大量数据训练如百万级图像数据集。计算资源消耗高依赖GPU集群。模型解释性差“黑箱”问题。关键区别维度机器学习深度学习数据需求中小规模结构化数据大规模非结构化数据特征工程依赖人工设计特征自动提取特征模型复杂度相对简单如线性模型高度复杂多层网络计算资源普通CPU即可需GPU加速计算适用问题简单模式识别、预测复杂模式如图像、语言深度学习和机器学习主要的区别还是在特征工程。神经网络可以认为是黑盒子可以自己学习数据特征提取特征。深度学习之所以称为深度学习是因为作为机器学习的子领域其核心是多层的神经网络。很明显的缺点是计算量参数大千万或亿级别计算速度慢。传统机器学习如K近邻算法就不能用来处理图像分类效果很不理想。典型场景如如果图片含背景会被参与到主体的识别计算那么最终分类结果会受背景影响但其实我们只需要关注图片主体来判断即可我们来感受下传统机器学习对图片的分类识别例子。假设三维矩阵表示一张图片。假设用传统机器学习K邻近算法分类。训练数据样例。开始处理分类。是通过距离算出来的比较像的图片来进行分类。分类别关系总结深度学习是机器学习的进阶分支专用于解决传统机器学习难以处理的复杂问题。机器学习更侧重“广义的数据建模”而深度学习聚焦“多层神经网络的自动化学习”。示例用机器学习预测房价线性回归分析历史数据中的面积、位置等因素。用深度学习识别人脸CNN模型自动从像素中学习眼睛、鼻子等特征组合。二、 神经网络基础神经网络Neural Network是模仿生物神经系统结构和功能的计算模型核心思想是通过分层连接的计算单元处理信息。以下是其基础概念的详解1. 基本结构神经网络由以下关键组件构成神经元Neuron模拟生物神经元接收输入信号通过激活函数如Sigmoid、ReLU处理后输出信号。公式示例(输出 f(权重 \cdot 输入 偏置))其中 (f) 为激活函数。层Layer输入层直接接收原始数据如图像像素、文本词向量。隐藏层进行特征转换和抽象多层结构形成“深度”网络。输出层生成最终结果如分类标签、预测值。连接权重Weights神经元之间的连接强度决定信号传递的权重通过训练不断调整。2. 工作原理神经网络通过前向传播Forward Propagation和反向传播Back Propagation实现学习和优化前向传播输入数据逐层传递每层神经元计算加权和并应用激活函数。最终输出层产生预测结果。示例图像输入 → 隐藏层提取边缘特征 → 输出层识别为“猫”。反向传播计算预测结果与真实标签的误差如均方误差、交叉熵。利用梯度下降算法从输出层反向逐层调整权重和偏置最小化误差。核心公式(权重更新 权重 - 学习率 \times 误差梯度)3. 关键类型根据结构和用途主要分为前馈神经网络Feedforward NN信号单向流动输入→输出无反馈循环适用于静态数据处理如分类、回归。卷积神经网络CNN引入卷积层和池化层专用于图像处理卷积层提取局部空间特征如边缘、纹理。池化层压缩数据减少计算量如最大池化保留显著特征。循环神经网络RNN包含时间维度反馈如LSTM、GRU处理序列数据如文本、语音记忆单元保存历史信息解决长期依赖问题。4. 训练流程神经网络的典型训练步骤数据准备收集并预处理数据如归一化、分词。划分训练集、验证集、测试集。模型初始化随机设置初始权重和偏置。选择网络结构如层数、神经元数量。迭代优化前向传播计算输出。反向传播更新权重。重复直至误差收敛或达到预设迭代次数。评估与调优使用验证集防止过拟合。调整超参数如学习率、层数。5. 核心优势与挑战优势自动学习复杂非线性关系。处理高维度数据如视频、三维图像。灵活适配多种任务分类、生成、预测。挑战计算成本高深度网络需GPU加速。过拟合风险数据不足时模型泛化能力差。解释性弱决策过程难以直观理解“黑箱”问题。示例简单分类任务输入手写数字图像 → 神经网络提取特征 → 输出数字0-9的分类。自然语言处理RNN处理句子“今天天气晴朗” → 输出情感分析结果为“积极”。神经网络是深度学习的基础其分层抽象机制使其成为处理复杂现实问题的核心工具。6. 神经网络基础理解例子以下内容部分参考了教程《深度学习保姆级教学》。先从计算机如何识别图片开始。假设得分函数f()得出属于每个类别的得分每个像素点的权重参数W是不一样的。假设有10个分类fWxb可以得出图片数据在10个类别下的得分不同类别不同的权重W。因此通过矩阵得到不同类别下的得分。10 代表10个不同类别。W权重参数 b偏置参数微调。各自类别是各自的b值b不是固定值。假设图片分为4个像素通过得分函数计算在3个类别下的分数。3类别下的权重W4个像素都有W值 与3个类别下的b。W中狗这个行的第三个像素权重是2.1说明狗类别中第三个像素对识别是比较重要。W这个矩阵是哪来的优化而来的。一开始可能就是随机的矩阵如下面这个矩阵权重参数对猫的识别就是很一般后来经过训练得到最好的W矩阵。神经网络就是在找W的过程就是做这个事。神经网络一般是网络结构不变不同的任务损失函数的定义不一样而已。但loss值都是越大说明越偏离越不好。比如下面的一个损失函数定义所有的其他类别得分减去正确类别的得分。值为容忍程度。并不一样。模型A的参数只关注了数据样本中的第一个点后面都是0说明只关注局部所以A是过拟合。B的权重说明是0.25均匀分布到样本中的每一个点。所以加正则化惩罚项RW来解决参数 权重参数变异入是惩罚系数干掉削弱那些变异的地方 入值大不变异的地方 入值小。模型越复杂过拟合风险越大。刚开始可能W权重是随机初始化的但是如何更新W呢求loss。回归任务是得分值计算损失分类任务由概率值来计算损失。得分值转成概率值来分类。ex 放大区别。norm归一化得到概率值P。L函数求损失对数函数logX得出的概率值P是之间概率值越接近的说明越接近类别。所以用对数函数log。 XP越接近0代表损失越大。前向传播 Wx-L lossWx算出loss 完成属于前向过程。若得出的损失高时需要调整W了更新W那就需要反向传播了。求出W。源数据 有可能经过得分函数中 ABC好几个 W参数矩阵 变换。如果1次变换的话就是与线性回归和逻辑回归没多大区别。神经网络就是 由原来的 一个W权重 变更多个W权重来完成这个事情。神经网络本质在优化求解可使用梯度下降。对f和z求偏导就知道z对结果的影响有多大。对X求偏导需要做两步。Y类似。反过来分别求 w3 w2 w1对 f的影响多大。其实也会涉及对 X Y Z求偏导。所以神经网络的 反向传播并不是像梯度下降中可以直接计算得出而是有层次或顺序的从后往前逐层计算反向传梯度值来做梯度相乘。正向得到loss后用loss反向求导得到新的。再反复直到得到最优解W。下面红色0.2是算出的梯度实际场景上都是对矩阵偏导的。答案是不行。7. 神经网络整体架构理解神经元 列数 一个样本有 3个 输入特征 x1 x2 x3 年龄 体重 身高。层1 层2 则是对应 xw1 (xw1)w2层1将3个特征神经元x1 x2 x3 转成4个特征比如1 圆圈 0.1 * x1 0.2x2 0.3x3,2 圆圈 0.4 * x1 0.5x2 0.6x3,–至于为什么计算要这么分 这就不管了。如下非线性函数max( ) 做非线性变换神经元越多理论上效果越好但越多过拟合的问题出现的概率和风险越大是的。神经元 64 、28是属于常见的值。正则化的作用激活函数上者会出现梯度消失的现象出现。DROP-OUT三、卷积神经网络CNN卷积神经网络Convolutional Neural NetworkCNN是专用于处理图像、视频等空间数据的深度学习模型其核心通过卷积操作提取局部特征。以下是CNN的基础详解1. 核心组件CNN的关键结构包括卷积层Convolution Layer通过卷积核滤波器扫描输入数据提取局部特征如边缘、纹理。操作示例输入图像5x5像素与3x3卷积核逐区域相乘生成特征图。公式(输出[i,j] \sum_{m,n} 输入[im,jn] \times 卷积核[m,n])池化层Pooling Layer压缩特征图尺寸减少计算量并保留显著特征。最大池化Max Pooling取区域内的最大值。平均池化Average Pooling取区域内的平均值。激活函数引入非线性常见ReLURectified Linear Unit(ReLU(x) max(0, x))2. 工作原理CNN通过多层卷积和池化逐步抽象特征低级特征提取第一层卷积捕获边缘、颜色块等基础特征。示例输入人脸图像 → 卷积层提取眼睛轮廓。中级特征组合后续层将低级特征组合为复杂结构如眼睛、鼻子。高级特征识别最终层输出可分类的特征如“人脸”。3. 典型结构CNN的常见架构模式输入层接收原始图像如RGB三通道矩阵。卷积层堆叠每层卷积核尺寸可逐渐减小如从5x5到3x3聚焦更精细特征。全连接层Fully Connected Layer在末尾将特征映射转换为分类结果如输出10类标签。经典模型示例LeNet-5早期CNN用于手写数字识别。ResNet引入残差连接解决深度网络训练难题。4. 优势与挑战优势局部特征提取卷积核专注小区域适应图像的空间相关性。平移不变性同一特征在不同位置可被识别。计算高效池化减少数据量卷积共享计算。挑战深度依赖过深网络可能导致梯度消失。参数调整复杂卷积核尺寸、层数需大量实验优化。应用示例图像分类输入动物图片 → CNN识别为“猫”或“狗”。目标检测在视频中框定并识别车辆、行人。CNN通过其独特的空间特征提取机制成为计算机视觉领域的基石模型。右下角是权重得到特征图 33f是不同特征提取方法。更正卷积核卷积核 filter可以多个卷积核进行特征提取得到多个对应特征图。0 边缘填充 主要解决被计算的节点的公平性弥补边界特征被提取的缺失。中间的数据被计算的多。也可以加多圈也可以用来补充长度对齐。步长 1 核尺寸 3364张特征图池化时 图的数量不改变用于特征压缩每个2*2区域中 取出特征图中最大的值。值大权重比较重要平均池化两次卷积卷积层CONV 非线性变换 RELU 即激活层 一次池化。带参数参数变化计算的才算为一层。一般自己训练模型的话全用经典网络就可以够用了不用自己设计网络结构。四、循环神经网络RNN循环神经网络Recurrent Neural Network, RNN是一种用于处理序列数据的神经网络模型。与传统的神经网络不同RNN 具有记忆能力能够处理时间序列数据如文本、语音、时间序列等。1. 基本结构RNN 的基本结构包括输入层、隐藏层和输出层。其核心思想是在隐藏层中引入循环连接使得网络能够记住之前的信息。假设输入序列为 (x_1, x_2, \dots, x_T)隐藏状态为 (h_t)输出为 (y_t)则 RNN 的基本公式如下h t f ( W h h t − 1 W x x t b h ) h_t f(W_h h_{t-1} W_x x_t b_h)ht​f(Wh​ht−1​Wx​xt​bh​)y t g ( W y h t b y ) y_t g(W_y h_t b_y)yt​g(Wy​ht​by​)其中(W_h) 是隐藏状态的权重矩阵(W_x) 是输入状态的权重矩阵(W_y) 是输出状态的权重矩阵(b_h) 和 (b_y) 是偏置项(f) 和 (g) 是激活函数通常为 sigmoid 或 tanh 函数2. 训练过程RNN 的训练通常使用反向传播算法Backpropagation Through Time, BPTT。由于 RNN 具有时间依赖性反向传播需要在时间维度上进行展开计算梯度并更新权重。3. 变体由于 RNN 在处理长序列时容易出现梯度消失或梯度爆炸的问题研究者提出了多种变体如LSTMLong Short-Term Memory引入了记忆单元能够更好地处理长序列。GRUGated Recurrent Unit简化了 LSTM 的结构减少了计算复杂度。4. 应用RNN 及其变体广泛应用于自然语言处理、语音识别、时间序列预测等领域。5. 代码示例以下是一个简单的 RNN 实现使用 Python 和 TensorFlowimporttensorflowastf# 定义 RNN 模型modeltf.keras.Sequential([tf.keras.layers.SimpleRNN(units64,activationtanh),tf.keras.layers.Dense(units10,activationsoftmax)])# 训练模型model.compile(optimizeradam,losscategorical_crossentropy)model.fit(x_train,y_train,epochs10)总结RNN 是一种强大的序列数据处理工具但其训练和优化需要特别注意梯度问题。通过引入 LSTM 和 GRU 等变体可以更好地处理长序列数据。二次会把第一次隐层的 特征和之前的原始参数 两个参数再次传到 隐层中 计算。因此RNN适合NLP有上下文的理解 CNN适合图像处理。要先对英文向量化然后进行计算。LSTM是对RNN的改进或者说是变体。维度一般50-300维来表示理论上越大越精准但计算量越大。向量 词库大表窗口滑动构建数据的模型。五、对抗生成网络GAN对抗生成网络Generative Adversarial Networks简称GANs是一种深度学习模型由Ian Goodfellow于2014年提出。GANs由两个神经网络组成生成器Generator和判别器Discriminator它们在训练过程中相互竞争、相互对抗。基本原理生成器Generator生成器的任务是生成尽可能逼真的数据。它接收一个随机噪声向量作为输入并输出一个数据样本。目标是让生成的数据看起来像是从真实数据分布中采样出来的。判别器Discriminator判别器的任务是区分生成的数据和真实数据。它接收一个数据样本作为输入并输出该样本是真实的概率。目标是最大化正确分类真实数据和生成数据的概率。对抗过程在训练过程中生成器和判别器交替进行优化。首先固定其中一个网络的参数更新另一个网络的参数以最大化其损失函数。然后交换角色继续优化。这个过程不断重复直到两个网络达到一种动态平衡状态此时生成器能够生成非常逼真的数据而判别器难以区分真实数据和生成数据。损失函数生成器的损失函数通常使用交叉熵损失目标是让判别器将生成的数据误判为真实数据的概率最大化。L G − E z ∼ p z ( z ) [ log ⁡ D ( G ( z ) ) ] \mathcal{L}_G -\mathbb{E}_{z \sim p_z(z)}[\log D(G(z))]LG​−Ez∼pz​(z)​[logD(G(z))]判别器的损失函数同样采用交叉熵损失但需要同时考虑真实数据和生成数据的分类准确性。L D − E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] − E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathcal{L}_D -\mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] - \mathbb{E}_{z \sim p_z(z)}[\log (1 - D(G(z)))]LD​−Ex∼pdata​(x)​[logD(x)]−Ez∼pz​(z)​[log(1−D(G(z)))]应用领域GANs在多个领域有着广泛的应用包括但不限于图像生成与合成数据增强超分辨率重建风格迁移文本到图像的转换等矛与盾生成器网络 判别网络 二分类应用场景六、Keras实战以下是教程《深度学习保姆级教学》的一些实战笔记包含上面理论内容的实操作为记录不感兴趣的同学也可以直接绕开即可。标签熊猫标签转换成 0 0 1等最后得到个值。梯度下降的优化器SGD 损失函数过拟合现象 主要还是学习率 过大造成的一般学习率对训练结果影响最大。可以杀死一些过多的神经元可以防止过拟合。初始化权重参数的方法可以自己设置不设置就是默认的。加正则化正则化惩罚惩罚W不容忍较大的W过拟合。测试数据与训练数据的规格要是一样的。卷积层拉长操作。FC层直接使用 经典网络代码 参数即可细节参数 128等不用自己抠代码。学习率衰减 策略每个epoch归一化数据格式规范。与卷积层的 一个道理FC层 全连接层LSTM模型 相当于 RNN的变形体数据预处理 加载分集…GAN代码。彩蛋不能少~
阅读完成 · 觉得有帮助?
咨询建站