当前位置: 首页 > news >正文

深度学习入门(1)

感知机
  1. 感知机 Preceptron

    层数:一层(输入层+输出层 无隐藏层)(层数不算输入层

    神经元连接:输入层直接连接输出层

    激活函数:仅使用阶跃函数(阶跃函数:以阈值为界,一旦输入超过阈值,就切换输出)

    处理问题类型:线性可分问题

    在这里插入图片描述

    w1 w2 :权重 --权重控制每个x的重要程度

    b:偏置 --偏置是调整神经元被激活的容易程度的参数

  2. 多层感知机 MLP

    层数:至少两层(输入层+1层及以上隐藏层+输出层)(层数不算输入层

    神经元连接:层内无连接,层间全连接(同一层中的神经元之间没有任何连接,相邻两层的神经元之间存在全连接关系)

    激活函数:sigmoid relu等非线性激活函数

    处理问题类型:非线性可分(图像识别)(感知机通过叠加层可以进行非线性的表示)

神经网络
  1. 神经网络:多层感知机

  2. 激活函数

    回归上面感知机的公式,我们令a = b + w1x1 + x2x2,则h(a),当a<=0 h(a)=0;a>0 h(a)=1

    h(a) 这个函数就是激活函数 (阶跃函数)

    神经网络常使用的激活函数 Activation

    1. sigmoid

      在这里插入图片描述

    2. ReLU

      在这里插入图片描述

  3. 神经网络的前向处理forward:推理处理

    计算比较简单:

    A = XW + B

    A为输出矩阵,X为输入矩阵 W为权重矩阵 B为偏置矩阵

    import numpy as np
    ...
    ...
    A = np.dot(X,W)+B
    

    forward:从输入到输出方向的传递处理

  4. 神经网络 输出层的激活函数

    1. 回归:对连续数据的预测,用恒等函数

    2. 分类:对离散数据的预测,用softmax():从下列式子中可以看出输出总和为1

      在这里插入图片描述

      但是如果大数除以大数,会出现溢出情况,输出nan,对策:

      在这里插入图片描述

      加减一个常数,不会改变最后的结果

      在推理阶段一般会省略输出层的softmax操作,因为输出值最大的神经元位置不会变化

  5. 批处理 batch

    batch_size:一次性打包1batch_size的数据进入神经网络处理

    更高效

训练神经网络
  1. 数据驱动

    从数据中学习,可以由数据自动决定权重参数

    神经网络(深度学习):没有人为介入,端到端机器学习

    1. 训练集:监督数据

      从训练集中训练模型,提取训练集的特征,与之标签对应,前向传播得到预测结果,反向传播更新参数

      1. 验证集:有的训练集就是验证集,验证集用来隔一段epoch计算一下当前模型的一些评价指标,监控训练过程,调整超参数
    2. 测试集

      观察模型的泛化能力

    3. 比例:(常见)

      训练集:测试集 = 8:2

      训练集:验证集:测试集 = 6:2:2

  2. 损失函数

    用来计算预测和真实结果之间的差异,越小越好

    下列式子:yk:预测结果;tk:真实结果;k为维度

    1. 均方误差

      在这里插入图片描述

    2. 交叉熵误差

      在这里插入图片描述

    3. mini_batch

      随机选择mini_batch的数据进行学习,计算损失函数

  3. 梯度

    梯度指示的方向是各点处的函数变化最快的方向,沿梯度反方向,方向导数取得最小值,函数沿该方向下降最快

    最优参数是指损失函数取最小值时的参数

    可以通过梯度来寻找损失函数最小值(或者更准确的说时极小值)

    寻找最小值的梯度法称为梯度下降法

    寻找最大值的梯度法称为梯度上升法

    但是可以加“-”号来反转问题

    1. 梯度下降法

      梯度前面的参数:学习率learning rate:表示更新参数的程度大小

      学习率是超参数(超参数需要人工设定)

      下面的公式为什么是负号:当导数的值是负的,代表这个线是在下降的,我们需要向正向方向前进,求极小值;当导数的值是正的,代表这个线是在上升的,我们需要向负向方向前进,求极小值。所以更新的方向都是和导数的正负相反

      在这里插入图片描述

  4. 神经网络的学习步骤

    1. mini_batch 批量学习 快速训练
    2. 计算梯度 grad
    3. 更新参数
    4. 重复

    因为这里选择的是mini_batch 所以方法称为随机梯度下降方法

  5. epoch
    1epoch表示整个数据集都被学习过一遍了 相当于进行了all_data_count / batch_size的学习数据

http://www.dtcms.com/a/298604.html

相关文章:

  • 深度学习篇---剪裁缩放
  • 人工智能——插值方法、边缘填充、图像矫正、图像掩膜、ROI切割、图像添加水印、图像噪点消除
  • 微观低代码
  • ubuntu 多网络路由优先级问题
  • 3020雕刻机脱机自定义指令
  • SIP广播对讲系统:构建高效智能的语音通信网络
  • Yolo底层原理学习(V1~V3)(第一篇)
  • DIY ESP32录音机:用开发板打造你的迷你录音设备
  • vue3感悟
  • KFS同步服务离线提示ORA-00972: 标识符过长
  • Chrome插件学习笔记(三)
  • 【7 周速成通关】单片机从理论到实操速学路径(附知识图谱)
  • kettle 8.2 ETL项目【三、加载数据】
  • MEMS 定向短节在振动环境下精度有保障吗?
  • 中国航天集团实习第一周总结
  • 利用Trae将原型图转换为可执行的html文件,感受AI编程的魅力
  • 企业微信H5应用OAuth2登录,企业微信授权登录
  • RocketMQ 做成服务启动
  • FastGPT:重新定义企业专属知识库的灵活部署
  • Linux进程信号——信号产生
  • 【LeetCode 热题 100】22. 括号生成——(解法一)选左括号还是选有括号
  • Linux嵌入式工程师学习路线
  • Linux系统基本配置以及认识文件作用
  • 执行测试时测试数据准备困难如何处理?
  • 汪小菲食通达公司成立新零售公司,布局餐饮零售新赛道
  • 【算法】动态规划 · 上篇
  • Python day24
  • CRM 系统:实现商机全流程管理的关键
  • Qt XML 与 JSON 数据处理方法
  • 文搜图/图搜图