关于大模型学习中遇到的4

来源:网络

相关学习可查看文章:Transformer and Pretrain Language Models3-4​​​​​​​

什么是MLP?

MLP是多层感知器(Multilayer Perceptron)的缩写,

多层感知机(MLP)是一种人工神经网络(ANN)的一种,也称为多层前馈网络(MLFN)、深度前馈神经网络(DFNN)、回归神经网络(RNN),是机器学习中一种有监督学习算法。MLP由输入层、输出层和一个以上的隐藏层构成,每一层由一组神经元组成,隐藏层可有多个,当然也可以没有。

MLP的输入信号从输入层传入第一个隐藏层,神经元从输入层接收输入信号,通过局部激活函数(也称激励函数)来运算,激励函数可以保证每一层输出信号经过变换以后不管输入信号多大,样本空间映射都处于一个可控制的范围内,决定了输出信息的范围并维持其唯一性,从而保证模型的准确性和稳定性以及可学习性。

隐藏层和隐藏层之间采用权重变换,权重对模型的性能至关重要,应尽量使网络能得到良好的收敛效果。MLP模型的权重表征是一个非线性系统,因此利用梯度下降法来训练权重参数,求解一定的损失函数或者误差函数。训练过程中,不断更新权重(更新权重不需要手动设置,而是自动实现),使得网络的误差最小(即损失函数最小),让网络能够按照设定的目标达到预期的性能。

MLP在机器学习任务中有很强的适用性,将其用于分类任务的时候,使用的激励函数一般选择sigmoid函数等单位阶跃函数,sigmoid函数可以将输入信号压缩映射到(0,1),然后输出层使用概率输出,根据概率确定分类结果,也可以使用多个sigmoid函数,以及sigmoid函数组合实现多分类。另一个更简单的方法是单层神经网络(SLFN),可以通过修改激励函数的函数形式以及网络结构来实现不同的训练方法,使MLP能够处理非线性特征数据。

MLP由于其好用性、性能稳定,有几十年的历史,被广泛地应用在分类任务、回归任务、故障诊断任务(发电机状态监控)以及贝叶斯估计等方面。MLP具有计算复杂度高、训练耗时长,训练过程中模型过拟合,解决方案包括Dropout、L1正则化和L2正则化等众多准确性性能优化技术。


什么是有监督学习?

机器学习范式

有监督学习是一种机器学习范式,它涉及使用带标签的数据集来训练模型,以便能够根据输入数据产生正确的输出。具体来说:

  • 监督学习的目标是根据给定的输入数据,学习到一个模型,使得该模型能够在新的输入数据到来时,准确地预测出相应的输出。
  • 这种学习方式依赖于外部提供的“教师”或者已知正确输出结果的资源,通过对这些资源的运用,系统可以学习和调节自己的参数。
  • 监督学习的学习过程包括从标注数据中学习预测模型,这些标注数据代表了输入输出之间的关系。模型本身则是定义在特征空间上的,并且通常用于处理连续或离散的输入输出变量。3
  • 监督学习可以分为不同的类型,如回归问题和分类问题,这取决于输入输出变量的类型。此外,如果输入输出变量是序列,那么还可以考虑标注问题。
  • 在监督学习中,通常会假设输入与输出遵循某种联合概率分布,这是监督学习关于数据的基本假设之一。

综上所述,有监督学习是一种通过使用标记的训练数据来学习模型的方法,目的是实现对新数据的有效预测和分类。

注:通俗来说,有监督学习就是双语教学,一边说英文一边用中文表达这句英文的意思,让你能够一下就理解这句英文在讲什么,这个中文就是给的对应的一个标签,能立即明白。而无监督学习就是全英文教学,需要靠自己去理解,并没有给出对应的标签。


什么是正则化?

正则化是一种用于机器学习的技术,特别是在处理过拟合问题时非常有效。它的主要思想是通过在模型的损失函数中添加额外的正则化项(如L1范数或L2范数)来控制模型的复杂度,从而避免模型过度拟合训练数据。这种方法可以提高模型的泛化能力和稳定性,确保模型能够在未知的数据上进行良好的预测。

正则化可以通过不同的方式实现,例如通过增加模型的权重衰减(L1正则化),或者在训练过程中对输入数据执行标准化操作(L2正则化)。这些正则化方法有助于找到既能较好拟合训练数据又能较少过拟合的模型参数。此外,正则化还可以通过移除冗余特征来实现,即将那些对模型贡献较小的特征从模型中去除,以此来简化模型并提高其预测能力。

总结来说,正则化是一种重要的机器学习技巧,它通过对模型施加额外的限制来克服过拟合问题,同时保持或提高模型的预测性能。


什么是ResNet?

ResNet是一种用于​​​​​​​图像识别的深度残差网络,是卷积神经网络的一种重要模型,ResNet开创性地引入了残差连接,解决了深层网络在训练过程中梯度弥散的问题,使深层模型的训练更加简便,同时也验证了随着网络层次的加深模型能够获得更好的性能

模型结构

整体架构

ResNet有许多模型:如ResNet34, ResNet50,不过这些基本上都是根据层数来命名的,ResNet网络模型一般是开始有一层卷积层来提取图像特征,再经过池化,然后进入残差块中(ResNet的主要结构),最后再经过池化层与全连接层被输出出来,下图是一个ResNet34的模型示意图

在这里插入图片描述

在这里插入图片描述

残差块

下面是resnet的关键结构——残差块,它由两个卷积层和一个直连通路组成

在这里插入图片描述

在这里插入图片描述

右侧曲线被称为直连通路,直连通路有助于解决梯度消失的问题,因为此时当神经网络反向传播求权重时,因为这个多项式即使前一部分的梯度消失了,后一部分还能保证梯度的存在

模型特性

  • 直连通路的存在使得模型可以保留原始数据信息,同时可以解决梯度弥散的问题(梯度消失)
  • 可以通过堆叠增加网络层数,不过当模型过于深时,性能可能下降,经原作者试验,在1000层左右的范围内,模型性能随层数增加而增加
  • 直连通路的结果与卷积层结果直接相加,使得模型在训练过程中只需要拟合不同层网络输出值与输入值的残差值,而无需直接拟合网络输出值,大大降低了模型学习的难度,有助于模型的收敛

示例代码

以下是一个简化的 ResNet 模型中,有以下主要组件:

  • 卷积层(Conv2D):模型开始的卷积层,用于提取图像特征。
  • 最大池化层(MaxPool):提取图像中显著的特征
  • 4 个残差块(residual_block):每个残差块包括两个卷积层。
  • 全局平均池化层(GlobalAveragePooling2D):用于将每个通道的特征平均化,产生一个固定大小的输出。
  • 全连接层(Dense):输出层,根据任务的不同可能有不同的神经元数量。
import tensorflow as tf
from tensorflow.keras import layers, Modeldef residual_block(x, filters, kernel_size=3, stride=1, conv_shortcut=False):shortcut = xif conv_shortcut:shortcut = layers.Conv2D(filters, kernel_size=1, strides=stride, padding='same')(shortcut)shortcut = layers.BatchNormalization()(shortcut)x = layers.Conv2D(filters, kernel_size, strides=stride, padding='same')(x)x = layers.BatchNormalization()(x)x = layers.Activation('relu')(x)x = layers.Conv2D(filters, kernel_size, padding='same')(x)x = layers.BatchNormalization()(x)x = layers.add([x, shortcut])x = layers.Activation('relu')(x)return xdef resnet(input_shape, num_classes=10):inputs = tf.keras.Input(shape=input_shape)x = layers.Conv2D(64, 7, strides=2, padding='same')(inputs)x = layers.BatchNormalization()(x)x = layers.Activation('relu')(x)x = layers.MaxPooling2D(3, strides=2, padding='same')(x)x = residual_block(x, 64)x = residual_block(x, 64)x = residual_block(x, 128, stride=2)x = residual_block(x, 128)x = residual_block(x, 256, stride=2)x = residual_block(x, 256)x = residual_block(x, 512, stride=2)x = residual_block(x, 512)x = layers.GlobalAveragePooling2D()(x)x = layers.Dense(num_classes, activation='softmax')(x)model = Model(inputs, x)return model# 创建ResNet模型
model = resnet(input_shape=(224, 224, 3), num_classes=1000)# 打印模型概要
model.summary()

什么是残差连接?

残差连接(Residual Connection)是深度神经网络中的一个重要概念,它最初被应用于Deep Residual Learning中,并显著提升了神经网络的性能。这种连接方式也被称为跳跃连接或直连,其核心思想是在神经网络结构中加入一种跨层的连接机制,即将前一层输出作为后续各层的输入的一部分。这样的设计有助于保留信息,避免在信息传递过程中出现梯度消失或梯度爆炸的问题,进而加速模型的收敛。

具体的实现方式是将当前层的输出与前一层输出的叠加相加,形成新的输出,然后将其传入下一层进行计算。数学上,残差连接可以表示为:$y = f(x) + x$,其中$x$代表当前层的输入,$f(x)$代表当前层的输出,而$y$则是包含残差的输出。在向前传播时,整个结构的输出会被直接送入下一层;在反向传播时,由于包含了残差项,梯度的回传能够更有效地更新各个层,进一步优化网络的参数。

残差连接的应用非常广泛,它在许多现代深度神经网络架构中都有所体现,如ResNet和DenseNet等,这些架构都在图像分类和目标检测等领域展现了出色的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】初步认识基于C的优化

C祖师爷在使用C语言时感觉到了不方便的一些点,于是一步一步改进优化,最后形成了C 本文将盘点一下基于C的语法优化 目录 命名空间:命名空间定义:命名空间使用: C输入&输出:cout:endl&#…

C语言每日一题(47)两数相加II

力扣 445 两数相加II 题目描述 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入&#xff…

(2024,强化学习,扩散,奖励函数)扩散模型的大规模强化学习

Large-scale Reinforcement Learning for Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1. 使用多步骤 MDP 的策略梯度 3.2. 基于分布的奖励函…

2023 中国互联网公司 Top 100 排行榜

中国互联网协会发布了《中国互联网企业综合实力指数(2023)》报告,来源:https://www.isc.org.cn/article/18458024914186240.html 预览如下: 这份报告总结了互联网公司的排名,毫不意外,腾讯、阿里…

设计模式⑧ :管理状态

文章目录 一、前言二、Observer 模式1. 介绍2. 应用3. 总结 三、Memento 模式1. 介绍2. 应用3. 总结 四、State 模式1. 介绍2. 应用3. 总结 参考文章 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决…

大势浏览器DasViewer的底图能否改为卫星底图?

支持的。官网3.2.4版本tif格式的影像图可以加进来。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 #DasViewer##实景三维##三…

写了7年代码,第一次见这么狗血的小Bug!

大家好,我是程序员鱼皮。 孽起 Bug 年年有,今年特别多。前段时间给大家分享过一个 特别坑的小 Bug,结果这两天我个倒霉蛋又遇到一个特别离谱的 Bug,有多离谱?大家可以看看视频:https://www.bilibili.com/vi…

23111 C++ day1

思维导图 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include<array>using namespace std;int main() {int a0,A0,num0,space0,other0;array<char…

前端实现转盘抽奖 - 使用 lucky-canvas 插件

目录 需求背景需求实现实现过程图片示意实现代码 页面效果lucky-canvas 插件官方文档 需求背景 要求实现转盘转动抽奖的功能&#xff1a; 只有正确率大于等于 80% 才可以进行抽奖&#xff1b;“谢谢参与”概率为 90%&#xff0c;“恭喜中奖”概率为 10%&#xff1b; 需求实现 实…

综合CRM客户管理系统

技术框架&#xff1a; JAVA MYSQL SSH 功能介绍&#xff1a; 个人工作、信息中心、客户管理、合同订单、财务管理、产品管理、人事管理以及数据回收站等8个模块。另包括权限管理模块用于系统的用户、角色和相关权限&#xff0c;收发邮件功能用于获得客户的详细需求&#xf…

docker 基础手册

文章目录 docker 基础手册docker 容器技术镜像与容器容器与虚拟机docker 引擎docker 架构docker 底层技术docker 二进制安装docker 镜像加速docker 相关链接docker 生态 docker 基础手册 docker 容器技术 开源的容器项目&#xff0c;使用 Go 语言开发原意“码头工人”&#x…

Java基础进阶02-xml

一、XML&#xff08;可拓展标记语言&#xff09; 1.学习网站&#xff1a; https://www.w3schoo1.com.cn 标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的 2.作用 用于进行存储数据和传输数据 作为软件的配置文件 …

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目&#xff01;今天和大家分享一下&#xff0c;如何使用IntelliJ IDEA里面的maven插件&#xff0c;来快速搭建一个简单的Springboot基础项目。 第一步&#xff0c;菜单里面找到&#xff0c;文件-》新建-项目。如图。我们勾选了是…

ChatGPT用来润色论文\生成完整长篇论文\进行AI绘图,到底有多强大!!

​课程安排 学习内容 第一章 2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二章 OpenAI开发者大会后GPT最新技术 1.最新大模型GPT-4 Turbo详细介…

Spring Boot 整合 Camunda 实现工作流

工作流是我们开发企业应用几乎必备的一项功能&#xff0c;工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda&#xff0c;所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入&#xff0c;希望本文对您有所帮助。如果您是一名Java开发或Spring框架…

【博客搭建记录贴】问题记录:hexo : 无法加载文件 C:\Program Files\nodejs\hexo.ps1,因为在此系统上禁止运行脚本。

1&#xff0c;背景 hexo&#xff08;博客框架&#xff09;安装完毕之后&#xff0c;正准备看看其版本&#xff0c;发现出现下面脚本禁止运行的错误。 PS C:\Users\PC> hexo -v hexo : 无法加载文件 C:\Program Files\nodejs\hexo.ps1&#xff0c;因为在此系统上禁止运行脚…

AMIS的组件学习使用

部分代码片段 {"id": "filterForm","className": " xysd-zbkb-pubquery","labelWidth": 130,"body": [{"type": "grid","className": "xysd-grid-query-input","c…

第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)

文章目录 第12章_集合框架本章专题与脉络1. 集合框架概述1.1 生活中的容器1.2 数组的特点与弊端1.3 Java集合框架体系1.4 集合的使用场景 2. Collection接口及方法2.1 添加2.2 判断2.3 删除2.4 其它 3. Iterator(迭代器)接口3.1 Iterator接口3.2 迭代器的执行原理3.3 foreach循…

dolphinscheduler节点二次开发需要改动的部分

dolphinscheduler节点二次开发需要改动的部分 前端 在dolphinscheduler-ui/public/images/task-icons/目录下新增两个节点的logo图片&#xff0c;一个为激活状态的一个为非激活状态的&#xff0c;如下。 修改文件dolphinscheduler-ui/src/views/projects/task/constants/task…