tag 标签: 深度学习

相关帖子
相关博文
  • 热度 4
    2023-11-24 17:55
    1208 次阅读|
    0 个评论
    来源:友思特 智能感知 友思特分享 | Neuro-T:零代码自动深度学习训练平台 欢迎关注虹科,为您提供最新资讯! 工业自动化、智能化浪潮涌进,视觉技术在其中扮演了至关重要的角色。在汽车、制造业、医药、芯片、食品等行业,基于视觉技术实现的缺陷检测具有非常大的需求。对于传统检测方法,目视检查方法能够有效检测非标、具有挑战性的缺陷,传统机器视觉方法具有稳定的速度及准确性,适合重复检测任务。这两种方法具有诸如检测精度、缺陷类型、技术人员成本等局限性。在这种背景下,融合深度学习的视觉检测方案有效地结合了两者的优势,满足了传统检测方法的需求。 为什么要选择友思特 Neuro-T? 深度学习项目流程如上图所示。对于深度学习视觉检测方案: (1) 高质量的训练数据对于创建高性能的深度学习模型至关重要; (2) 创建高性能的深度学习模型需要丰富的专业知识。 完成一个深度学习视觉检测项目,需要有丰富经验的行业领域工程师和深度学习工程师。 友思特 Neuro-T为传统的深度学习视觉检测方案提供了“ 自动深度学习 ”的解决方案。Neuro-T 软件集成 自动深度学习算法,结合自动标注功能 ,一键生成高性能视觉检测模型,无需AI领域专业知识即可创建深度学习视觉检测模型。 友思特 Neuro-T 平台介绍 友思特 Neuro-T 是一个用于深度学习视觉检测项目的一体化平台,可用于 项目规划→图像预处理→图像标注→模型训练→模型评估 一系列任务。Neuro-T提供了便捷的工具和友好的图形化界面,只需四个步骤即可创建一个深度学习模型: 01 文件页面 第一步是在文件页面导入图像 该页面还提供了如图像切片、图像增强等预处理功能 02 数据页面 第二步从选择模型类型开始。 通过标注,用户可以指示模型要检测的目标 03 训练页面 第三步是验证数据集并启动训练过程 自动深度学习算法使得一键即可完成训练设置 04 结果页面 第四步是评估模型的性能 模型可以基于四个不同的值(Accuracy, Precision, Recall, F1 Score)进行评估 友思特 Neuro-T 的优势特性 自动深度学习算法 深度学习算法分为:自动深度学习算法和现有算法。自动深度学习算法使得每个人都可以轻松地创建高性能的深度学习模型。 自动标注 在大数据量深度学习任务中,标注任务需要耗费大量时间。Neuro-T通过自动标注显著缩短项目周期时间,基于用户已标注的数据来保证后续标注的一致性。 本地云环境 用户可以在安全的环境中与团队成员协作。Neuro-T 的服务端-客户端架构只允许团队成员共享工作区。 流程图和推理中心 流程图可以链接多个不同类型的模型来简化项目设计,如分类+检测模型组合。推理中心可以评估项目流程图的推理时间和准确率,从而以更少的尝试和错误创建最佳模型。 快速再训练 如果出现新的缺陷类型或设计修改,需要重新进行训练,且存在时间延迟和效果下降的问题。Neuro-T 通过自动深度学习和平衡数据,以较短的训练时间实现较高的模型精度。 友思特 Neuro-T 的功能 分类(Classification) 分类正常类型与缺陷类型 分割(Segmentation) 通过分析像素识别特点形状缺陷和位置 目标检测(Object Detection) 识别物体类别、数量和位置 异常检测(Anomaly Detection) 通过仅在正常图像上训练来识别异常图像 字符识别(OCR) 光学字符识别 旋转(Rotation) 旋转图像至正确方位 友思特 Neuro-T 应用案例 1. 汽车用钢材 检测要点: (1)汽车表面缺陷检测和装配完成检测。 (2)VIN编号识别。 (3)材料表面涂层区域的识别。 (4)无损检测、焊接/卷材/板材检测。 2. 螺栓/螺母组件检测 3. VIN编号识别 4. 其他汽车制造业应用领域
  • 热度 3
    2023-4-11 22:22
    1645 次阅读|
    1 个评论
    一、 前言 最近人工智能、深度学习又火了,我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架,三年后感觉各种框架都成熟了,现成的教程也丰富了,所以我继续边学边写。原教程链接: https://www.bilibili.com/video/BV1CW4y1r7Q7?p=1&vd_source=e8c67158ee12f84a27ae1bb40bb2775d 所以准备出个系列的教程,给不耐烦看视频或者只是想浅了解一下的同学。我选的框架 tensorflow ,据说 GPT 也是用的这个,应该是比较大众化的了。 二、 前序准备 1. 开发环境 (1) Python3.8 (2) Anaconda3 (3) Tensorflow (4) Numpy (5) Pandas (6) Sklearn 先依次安装好上面的软件和包,其中 python3.8 和 Anaconda3 是直接下载安装,如果官方链接比较慢,可以搜下三方的源安装。其中 Anaconda3 不是必须的,用这个工具是因为确实挺香的。 剩下的 3-6 都是 pip 安装的包,注意使用 Anaconda3 的话就在 Anaconda Prompt 里使用 pip 命令,如果是其他集成环境或者原生的 python 环境,直接就在 cmd 里使用 pip 安装。 pip 安装时可能会遇到下载特别慢的情况,建议使用国内源,方法参考下面链接: https://mp.weixin.qq.com/s?__biz=MzUzOTY2OTcyMw==&mid=2247487143&idx=2&sn=b2cc99fcb09a774be78235c10d06d1c0&chksm=fac5ab13cdb222058f9b73d5c3600ad74194473ce9413cca5e069354f4e555b19f1293c39453&scene=27 实际安装过程可能会比较曲折,需要大家慢慢研究了,一般来说多搜索下都能解决问题。比如安装 Sklearn 不是 pip install sklearn (虽然也能安装上另外一个不相干的包),实际应该用: pip install scikit-learn 类似的坑多的很,一时半会也列不完,反正也是花了一个晚上才算是把开发环境给搞定。 2. 数据准备 这次我们是要做天气预测,那自然是要弄到历史的天气数据。有三个路径,一是购买打包好的大数据,看了下便宜的都要好几千。二是网上爬数据,参考下面的链接: http://lishi.tianqi.com/shanghai/201101.html 这个网站从 2011 年 1 月到最新的天气数据都有,可以自己爬下来,推荐使用“八爪鱼”,还是挺好用。 第三个路径就是做伸手党,正好我手上有上海的天气数据,在文章末尾链接提供。 我手上的这份数据分为 “训练集”和“验证集”两个文件,直观来看训练集就是用于模型训练,验证集就是使用训练好的模型来预测试试,数据的格式一样,在使用时需要裁剪一下。 各字段的意思看名字就知道了,其中 avg 指的是当日平均温度, avg_befor1 指的是昨天的平均温度, avg_befor2 前天的,依次类推,一共回溯 7 天的。这个模型也就是用前 7 天的平均气温来预测当天的平均温度。 三、 构建模型 1. 读入待训练的数据 (完整代码跟前面天气数据放一起了) 从上图,我们可以看到读入了 4429 行数据,每行有 13 列,这样的数据不能直接使用,需要裁剪一下。 2. 数据裁剪 这里我们做了 3 个操作。 1) 是将前 7 行有 null 的数据删除 2) 是将 avg 这一列单独存起来了,用于后面的模型训练。 3) 将 high 、 low 、 avg 三列从数据集中删除,因为我们是使用“历史数据”来预测当日的平均温度,这三列都属于当日数据所以要删除。 3. 数据预处理 这里做了 2 个操作。 1) 将数据集转化为 array 的形式,这样 TensorFlow 才能处理(自动去掉了 title 的内容) 2) 将数据做归一化,主要是为了方便后面的模型训练,简单来说就是将 15 、 20 、 30 这些数字转化为 -1 到 1 之间的数字,可以参考下面这个链接。 https://blog.csdn.net/qq_51392112/article/details/129091683 4. 构建模型 这里我们构建了一个 1 的神经网络模型,其中 16 、 32 、 1 指的是每一层的神经元数量,第一层与第二层的神经元数量无所谓可以随便写,第三层的 1 与预测的结果相对应,也就是我们使用前 7 天的平均温度,预测的是今天这“一个”平均温度。如果你预测的是当天最高温和最低温,就需要将第三层的 1 修改为 2 了。这里因为我们只预测 1 个结果(当天的平均温度),所以输出只需要 1 个。 其中 model.compile 是对神经网络进行配置,主要参数含义如下: 解释起来比较复杂,这里我们只管先用着,反正就是一些可以选择的参数,对模型的训练可能有很大影响,也可能没啥影响,一些资深人事主要工作就是调调这里改改哪里。 如果想改改参数看看效果,可以参考下面的链接: https://blog.csdn.net/chaojishuai123/article/details/114580892 5. 训练 model.fit 里也有好几个参数,详细如下: 1) Input_features ,输入的训练数据集 2) labels_avg ,前面我们将 avg 列单独保存了起来就是为了用在这里 3) Validation_split=0.1 ,将其中的 10% 数据用于模型验证,剩下的 90% 用于模型训练 4) Epochs ,迭代次数,也就是这些数据会被用于模型训练多少次 5) batch_size ,每一次训练使用的数据量 除了 features 、 labels ,其他三个参数大家可以随意调调看对结果的影响。 上面截图中,注意有 loss 和 val_loss 两个结果,其中 loss 是模型训练后的“损失”,你可以理解 loss 越小则模型对你输入的数据匹配度越高(越契合你的训练数据)。 Val_loss 是模型验证的“损失”,也就是前面我们设置的那 10% ,这个值越小说明你的模型验证的结果也不错。 但 Loss 也不是越小越好,太小说明模型对你输入的数据产生了过拟合,可能结果是训练数据很不错但使用起来就很差。所以我们追求的其实是 loss 和 val_loss 的综合解,即在 loss 较低的情况下, val_loss 也不太高。 6. 输入待预测的数据 这里的操作与前面训练集其实很像,都是将数据读入后进行裁剪,同时将 avg 列另外存起来。最后将裁剪后的数据进行预处理。 7. 预测 model1 就是我们构建并训练好的模型了,现在我们可以使用前面准备好的训练集了。 下面我们再看看实际温度,只能说是毫无关系,所以天气预报为什么不准呢对吧,说明根本就无法预测。不死心的同学可以试试自己修改下参数。 四、 回顾 这是一次不太成功的示范,实际上我花了不少时间试图从最高温、最低温、平均温度、历史温度等找到温度变化的规律,但真的是没弄成。说明在深度学习中找对目标和数据集很重要啊。数据集和完整代码见下面的链接: https://share.weiyun.com/mrL02s7J
  • 热度 3
    2023-3-29 12:41
    2918 次阅读|
    1 个评论
    一、 前言 GPT 的发布让 AI 再次热了起来,与上次阿尔法狗不同的是,现在人人都可以跟聊上几句,给它出出难题,还能调戏下。同期英伟达发布了针对 AI 领域的全新 GPU H100 ,有的童鞋会疑惑,这个英伟达不是做显卡打游戏的吗,怎么就跟 AI 扯上关系了。其实英伟达的显卡不是简单的与 AI 有关系,而是大有关系。 二、 图形处理与 GPU GPU 的起源确实是基于图形处理的需求。早期还没有专门 GPU 时,我们打游戏所有的逻辑处理都放在 CPU 执行, CPU 的处理能力越来越强,但经不住游戏画面增长的更快,这就对图形处理提出了更高的要求。 而图形处理的本质其实就是光影的计算,以下图为例,在屏幕上画一个圆非常简单。 但如过要让这个圆 “立体”起来,其实就是要给它加上光影,像下图这样。 游戏画面也是这样的逻辑,一个画面优质的游戏一定是有丰富的光影效果,而光影效果的本质其实就是在虚拟的 3维空间里,模拟光的照射。屏幕中的画面其实就是特定角度下,由计算机计算出的,你应该看到的光影效果。 需要特别注意的是,游戏中你会不停的移动,也就是所有光影的效果都需要实时的计算出来。假设屏幕分辨率为 1920*1080,即2073600(207.36万)个像素,游戏中每个像素都需要根据光影参数来计算显示的颜色和明暗。假设一个常见的Inter I5 CPU主频为3.2GHz,即最多每秒可做32亿次运算。但这里的一次运算只是做了一次简单的二进制加减法或数据读取,一个像素的光影计算我们可以假设需要100次运算,即CPU一秒约处理3200万次像素运算,大概15张图片,用专业点的说法,这个游戏流畅度大概是每秒15帧的样子。 那我们能不能继续提升 CPU的主频呢,可以但是能提升的空间非常有限。所谓主频本质上其实就是一个节拍器,CPU执行命令时其实是要按照一个特定的节拍来同步其各模块的操作。可以想象CPU其实就是个工厂流水线,1+1=2的本质其实至少包含了3个步骤: 1、 将第一个 1和第二个1从内存提取到CPU 2、 两个 1在CPU中相加得到2 3、 将 2从CPU存放到内存 本质上来说,所有的指令操作、图形计算,最终到达 CPU时都会被拆分成类似于1+1=2这样的加法运算。而每一个节拍又只能执行其中的一步,如果我们可以将节拍打的更快一些,上述3个步骤执行的也就越快,那我们就说CPU的频率越高。但再往下看,我们打节拍又受到了晶体管开关速度的限制。简单来说,节拍打的越快,晶体管的开关速度也就更高,这就直接导致了CPU的发热问题。所以目前高性能CPU的频率始终被限制在5GHz,可见从CPU频率上已没有太多空间可以提升。工程师们就想到“其实任何一个像素的计算与其他像素的计算结果关系不大”,那为啥不多整几个计算核心“并行”计算呢,于是GPU就出现了。 一个典型的显卡 GTX1060,主频是1.5GHz大概是Inter I5一半左右,但是它具备1280个计算核心。每个计算核心每秒可做15亿次运算,1280个核心每秒就是19200亿次运算,那一秒可以处理192亿次像素计算,大概925张图片,是CPU计算能力的61倍!但GPU的特性只能应用于图形计算这种可以并行的任务,若是做普通的串行任务其速度远远不如CPU。 那我们能不能把 CPU和GPU结合起来,让他频率高,核心数量还多呢?还是不得行,上千个核心提升一点点的主频就会带来一些列问题,比如撒热、抖动、稳定性等等。所以内核数与频率就是不可能三角,CPU与GPU都只能侧重于其中一面,在不同的领域发挥作用。 AI的本质其实与游戏差不多,也是大量的计算,只是计算的数据量会更庞大。 三、 AI训练与矩阵计算 所谓训练 AI,其实就是向神经网络中投喂大量的数据。比如 我想要生成美女图片,以前的做法是建设一个有足够素材的库,让美女的各个元素(手、脚、嘴巴、眼睛、身材等等)随机组合在一起,结果可能差强人意。现在则只需要向神经网络里导入大量的美女图片,当你导入的图片数量足够多时,神经网络也就 “学会”了什么是美女,这样它就能自动产出美女。相对应的,如果你一直输入的是猛男,那它也只能生产猛男了。 我们知道其实图片就是像素构成的,比如下面这张图的像素是 8x8 (简化示意),也就是 64 个像素点,我们可以用 1x64 这样的数组来表示它。 以下图这样的 3层神经网络为例(原本是7个输入,我们修改为64个输入),所谓的数据“投喂”其实就是将图片以64个数字表示,然后输入到网络中。 具体怎么输入呢,其实就是以 A0(图片原始数据)为基础,来计算A1,接着以A1为基础计算A2、A3及最终结果A4。计算过程遵循以下公式: A1 = W1*A0 + b1 A2 = W2*A1 + b2 A3 = W3*A2 + b3 A4 = W3*A3 + b4 其中 W1\W2\W3\W4、A1\A2\A3\A4的数据量大小由每一层神经元的个数决定,比如我们每一层设置为64个神经元,则W1是一个64x64的数字矩阵,A1则是1x64的数字矩阵(与输入一样)。下图是一个矩阵相乘的示意。 所以对神经网络的投喂问题就变成了 A0与W1两个数据矩阵的乘法问题,那么每一层神经网络的计算就需要至少4096次乘法计算,3层网络就需要至少12288次乘法计算。这还只是64x64像素的图片,如果是1280x1280的像素,就需要数百万次计算。 我们很容易就能想到也可以用 GPU(显卡)来执行这些计算,因为每一张图片的输入都可以独立运行,那么我们给显卡的每一个核都输入一张图片,那同时就可以有上千张图片一起在计算,这样的计算效率自然是杠杠的。 五、 AI与算力 综上所述, AI的发展离不开大量的算力资源,以GPT4来说,每1000字的算力大约需要0.06美元(约0.4元)。在小规模使用时可能还看不出成本的高低,当AI成为基础设施,比如搜索引擎,每天上亿次的搜索频率,成本可能也会去到上亿的数量级,这还只是其中一个应用。所以未来AI的发展离不开算力,英伟达则是在显卡的基础上,专门针对AI开发了特殊的GPU以满足算力需求,但可见的未来还是远远不够的。 参考前几年的数字挖矿,显卡的价格将迎来一波上涨。除计算性能外,另外还有更大的成本就是电力。所以可以预见的是,国内会出现一批专门做 AI芯片设计的公司(参考比特大陆),还会有一批将数据中心建设到大西北以获取更廉价电力的小团队(普通人的机会),这些还都是国家大力支持的。所以发财的路子已经有了,朱军加油。
  • 热度 8
    2023-1-5 14:04
    735 次阅读|
    0 个评论
    数学模型 | 分子结构 | QSAR 机器学习 | CoMFA| Hansch 如今是算力、高性能为先的社会,随着机器学习、深度学习的快速发展,用于生命科学医药研发的QSAR(定量结构-活性关系)也在快速发展。伴随着数据分析、数据挖掘数目的不断增大, 传统的风冷散热方式已经不足以满足散热需要,这就需要新兴的液冷散热技术以此满足节能减排、静音高效的需求。 作为国内品牌服务器厂商,蓝海大脑液冷GPU服务器拥有大规模并行处理能力和无与伦比的灵活性。它主要用于为计算密集型应用程序提供足够的处理能力。GPU的优势在于可以由CPU运行应用程序代码,同时图形处理单元(GPU)可以处理大规模并行架构的计算密集型任务。GPU服务器是医疗成像、医药研发、QSAR研究的理想选择。 本文将为大家全面介绍QSAR(定量结构-活性关系)及其研究方法。 什么是QSAR? 定量结构-活性关系(Quantitative Structure-Activity Relationship,QSAR)是目前国内外一个活跃的研究领域。主要基于各种分子描述符和模型算法,建立化合物的结构与其理化性质、生物学活性、毒理学效应、环境行为和归趋等的定性/定量关系。 随着计算机技术迅猛发展,QSAR的学术研究已步入到一个新水平,涉及化学、药物、环境和健康等诸多领域。同时,随着监管机构对其认可度的提高,QASR在工业化学品、农药、 消毒剂、化妆品、食品接触材料和添加剂、医药等的研发、风险评估、注册和管理方面发挥着越来越重要的作用。 但QSAR并不是一个只要输入物质结构,甚至CAS号码,就能输出一份报告的简单工具。事实上,QSAR 的应用需要大量的理论和实践基础。只有对模型算法选择、化学信息学、实验方法、毒性/生物活性的作用机制、 可靠性验证、法规知识等具备相当深入的研究,才能准确地将之运用相关领域。因此QSAR模型的构建和使用对专业知识要求比较高,这对新接触QSAR的人来说往往会存在一定难度。 QSAR建模过程 QSAR建模过程一般包含数据收集、计算与筛选分子描述符、模型建立、验证与评价四个步骤。 一、数据收集 广义上,在药物设计中,用以建模的化合物数据主要包括以下几类: 1、针对靶标的活性,如酶活性的半数抑制浓度和细胞活性的半数抑制浓度等 2、生物毒性,如口服急性毒性LD50、最小作用剂量MED、突变性和致癌性等 3、理化性质,如溶解性和血脑穿透能力等 4、环境中转化的表征参数,如水生毒性和降解速率等。数据的可靠性是模型有效的前提,只有通过可靠实验数据建立的模型才具有实际应用价值。 二、计算与筛选分子描述符 在QSAR研究领域,人们可根据化合物结构推导出来某种与之对应的数值指标,这些指标就是化合物物理化学性质微观上的描述,将此称作其生物学性质上某一“指纹”的“微观显示”,即分子描述符。 三、模型建立 QSAR模型可分为线性与非线性两类建模方法。其中线性模型中主要应用多元线性回归(MLR)、主成分分析(PCA)和偏最小二乘法(PLS)等方法;遗传算法(GA)、支持向量机(SVM)和人工神经网络(ANN)则能较好地处理非线性关系。 1、遗传算法 GA是根据大自然生物进化规律,模拟生物基因发生改变的现象。探索复杂模型的组合优化问题,通过选择、交叉和变异等过程的模拟组合,得到备选的多组自变量与因变量,通过适应度是否达到阈值或最优个体适应度上升趋势来判断其优劣,直至满足要求,得到最优QSAR模型。 2、主成分分析 在含有多变量的分析中,PCA常被作为简化数据的方法。该方法可以通过正交变换,完成变量线性到非线性的转化,从而简化QSAR建模进程。Bernardo等,通过该方法构建QSAR模型,对多环芳烃致癌毒性的预测得到了较好结果。 3、偏最小二乘法 PLS可以看作是MLR和PCA两种方法的结合,通过最小化误差的平方和筛选最优数据,排除原有信息中线性重迭的分子描述符,并且适合样本容量不足时构建QSAR模型。 4、人工神经网络 ANN是对人脑处理数据时神经元的模拟,将大量节点之间构成联系,建立模型,常用于构建非线性QSAR模型,但存在一定的不稳定性,需要提前筛选描述符才能构建有效模型。 5、支持向量机 SVM是一类监督学习方式,它建立在结构风险最小化原理基础之上,通过寻找最优超平面进行非线性分类,从而将非线性特征问题的分析向线性分析转变,被广泛用于分类问题和回归问题的解决中。 二维QSAR概念模式与研究方法 二维定量构效关系方法是将分子整体的结构性质作为参数,对分子生理活性进行回归分析,建立化学结构与生理活性相关性模型的一种药物设计方法,常见的二维定量构效关系方法有hansch方法、free-wilson方法、分子连接性方法等,最为著名和应用最广泛的是hansch方法。 一、活性参数 活性参数是构成二维定量构效关系的要素之一,人们根据研究的体系选择不同的活性参数,常见的活性参数有:半数有效量、半数有效浓度、半数抑菌浓度、半数致死量、最小抑菌浓度等,所有活性参数均必须采用物质的量作为计量单位,以便消除分子量的影响,从而真实地反映分子水平的生理活性。为了获得较好的数学模型,活性参数在二维定量构效关系中一般取负对数后进行统计分析。 二、结构参数 结构参数是构成定量构效关系的另一大要素,常见的结构参数有:疏水参数、电性参数、立体参数、几何参数、拓扑参数、理化性质参数以及纯粹的结构参数等。 1、疏水参数 药物在体内吸收和分布的过程与其疏水性密切相关,因而疏水性是影响药物生理活性的一个重要性质,在二维定量构效关系中采用的疏水参数最常见的是脂水分配系数,其定义为分子在正辛醇与水中分配的比例,对于分子母环上的取代基,脂水分配系数的对数值具有加和性,可以通过简单的代数计算获得某一取代结构的疏水参数。 2、电性参数 二维定量构效关系中的电性参数直接继承了哈密顿公式和塔夫托公式中的电性参数的定义,用以表征取代基团对分子整体电子分配的影响,其数值对于取代基也具有加和性。 3、立体参数 立体参数可以表征分子内部由于各个基团相互作用对药效构象产生的影响以及对药物和生物大分子结合模式产生的影响,常用的立体参数有塔夫托立体参数、摩尔折射率、范德华半径等。 4、几何参数 几何参数是与分子构象相关的立体参数,因为这类参数常常在定量构效关系中占据一定地位,故而将其与立体参数分割考虑,常见的几何参数有分子表面积、溶剂可及化表面积、分子体积、多维立体参数等。 5、拓扑参数 在分子连接性方法中使用的结构参数,拓扑参数根据分子的拓扑结构将各个原子编码,用形成的代码来表征分子结构。 6、理化性质参数 偶极矩、分子光谱数据、前线轨道能级、酸碱解离常数等理化性质参数有时也用做结构参数参予定量构效关系研究。 7、纯粹的结构参数 在free-wilson方法中,使用纯粹的结构参数,这种参数以某一特定结构的分子为参考标准,依照结构母环上功能基团的有无对分子结构进行编码,进行回归分析,为每一个功能基团计算出回归系数,从而获得定量构效关系模型。 三、数学模型 二维定量构效关系中最常见的数学模型是线性回归分析,Hansch方程和Free-Wilson方法均采用回归分析。 经典的Hansch方程形式为: 其中π为分子的疏水参数,其与分子脂水分配系数Px的关系为: ,σ为哈密顿电性参数,Es为塔夫托立体参数,其中a,b,c,k均为回归系数。 日本学者藤田稔夫对经典的Hansch方程作出一定改进,用抛物线模型描述疏水性与活性的关系: 这一模型拟合效果更好。Hansch方程进一步,以双直线模型描述疏水性与活性的关系: 其中的P为分子的脂水分配系数,a,b,β为回归系数,D代表方程的其他部分。双直线模型的预测能力比抛物线模型进一步加强。 Free-Wilson方法的方程形式为: 其中 为结构参数,若结构母环中第i个位置有第j类取代基则结构参数取值为1否则为0,μ为参照分子的活性参数, 为回归系数。 除了回归分析,遗传算法、人工神经网络、偏最小二乘分析、模式识别、单纯形方法等统计分析方法也会应用于二维定量构效关系数学模型的建立。 四、发展 二维定量构效关系的研究集中在两个方向:结构数据的改良和统计方法的优化。 传统的二维定量构效关系使用的结构数据常仅能反应分子整体的性质,通过改良结构参数,使得二维结构参数能够在一定程度上反应分子在三维空间内的伸展状况,成为二维定量构效关系的一个发展方向。 引入新的统计方法,如遗传算法、人工神经网络、偏最小二乘回归等,扩展二维定量构效关系能够模拟的数据结构的范围,提高QSAR模型的预测能力是2D-QSAR的主要发展方向。 三维QSAR概念模式与研究方法 由于二维定量构效关系不能精确描述分子三维结构与生理活性之间的关系,随着构效关系理论和统计方法的进一步发展,引入了三维定量构效关系。这种方法间接地反映了药物分子与大分子相互作用过程中的非键相互作用特征,相对于二维定量构效关系有更加明确的物理意义和更丰富的信息量,因此三维定量构效关系逐渐取代了二维定量构效关系的地位, 成为基于机理的合理药物设计的主要方法之一。 这是 3D-QSAR 的发展历程,我们可以看出自从 80 年代提出以来,它的发展还是很快的,目前应用最广泛的三维定量构效关系方法是比较分子场方法和比较分子相似性方法。 一、比较分子场分析方法 这种方法通过分析分子在三维空间内的疏水场,静电场和立体场分布,以这些参数为变量对药物活性做回归分析。它的基本原理是:如果一组相似化合物以同样的方式作用于同一一靶点,那么它们的生物活性就取决于每个化合物周围分子场的差别,这种分子场可以反映 药物分子和靶点之间的非键相互作用特性。 优势: 通过比较同系列分子附近空间各点的疏水性、静电势等理化参数,将这些参数与小分子生理活性建立联系,从而指导新化合物的设计 不足: 分子的排列是该模型最关键、最困难的问题,也就是说化合物与受体作用位点结合的方向,任何小误差出现在过程中都将导致计算结果的不精确。 二、比较分子相似因子分析法 与比较分子场分析方法最大的不同就是分子场的能量函数采用了与距离相关的高斯函数的形式,这种方法中共定义五种分子场的特征,包括立体场、静电场、疏水场以及氢键给体场和氢键受体场。 这个方法是人们对比较分子场分析方法做了大量修正和改进得到的更具优势的模型。 优势: 采用了与距离相关的高斯函数形式,可以有效地避免在传统比较分子场分析方法中由静电场和立体场的函数形式所引起的 不足: 由于分子场能量在格点上的迅速衰退,不需要定义能量的截断值 三、距离几何法 这种方法假定配体分子的活性基团与受体分子间的结合位点之间是相互 作用的,它将药物分子划分为若干功能区块定义药物分子活性位点,计算构象时各个活性位点之间的距离,形成距离矩阵;同时定义受体分子的结合位点,获得结合位点的距离矩阵,通过活性位点和结合位点的匹配为每个分子生成结构参数,对生理活性数据进行统计分析。 四、分子形状分析法 研究步骤一般可分为: 分析药物分子的构象,得到分子构象库 确定分子的活性构象 根据分子的活性构象选定参考构象 将其他分子构象与参考构象进行重叠 根据重叠构象确定公共重叠体积和其他的分子特征 最后根据重叠体积和分子特征,建立 QSAR 模型 QSAR的应用 一、微观方面的应用 1、药物设计 近年来,分子生物学和计算机科学的迅速发展,使得计算机辅助药物设计(CADD)在新药物开发中起 着非常重要的作用。按照是否已知受体的三维结构,可把这些方法分为两大类,一类是直接药物设计,用于 受体靶点三维结构已知的情况下,研究药物与受体的相互作用,根据受体受点的形状和性质设计新的药 物,如:对 DHFR 抑制剂、人体免疫缺陷病毒(HIV-1)蛋白酶抑制剂、5-羟色胺(5-HT)受体拮抗剂 等的研究;另一类是间接药物设计,当受体的三维结构未知时,采用对一组具有类似活性的化合物建立定 量结构-活性关系模型,根据 QSAR 计算结果的指导药物化学家可以更有目的性地对生理活性物质进行结 构改造。 CoMFA 和 CoMISA是应用最广泛的合理药物设计方法之一,这种方法认为,药物分子与受体间的相 互作用取决于化合物周围分子场的差别,以定量化的分子场参数作为变量,对药物活性进行回归分析便可 以反应药物与生物大分子之间的相互作用模式进而有选择地设计新药。 2、模拟污染物对酶、生物作用的动力学过程 3D-QSAR 发展至今,已称为计算机辅助农药设计的基本手段与分析方法。同时,在生物化学、生物 医学和生物毒理学方面,3D-QSAR 可用于研究酶的活性、生物体抗病毒能力的强弱、化合物的致癌致畸 性等。 具体来说,3D-QSAR 已用来研究多种酶(如水解酶、氧化还原酶、连接酶)的作用物和抑制剂,受 体(如 5-HT受体、GHRH 受体等)和运输载体。此外,3D-QSAR 在肿瘤学、抗菌剂、新陈代谢方面也 有一些应用。 二、宏观方面的应用 利用 3D-QSAR 解决环境化学问题才刚刚起步。 目前,对于一些除草剂,如光系统Ⅱ(PSⅡ)抑制 剂、氰基内稀酸酯类化学物、光合作用抑制剂嘧啶硫苯甲酸类化合物等,已研究了其三维定量构效关系。 如何将 3D-QSAR 研究深入,在环境化学中发挥更大作用,是迫切需要解决的问题。 3D-QSAR与传 统 OSAR 相结合,研究污染物水解、光解、生物降解以及土壤吸附等环境行为,将有助于更加深入的yanjiu研究 这些环境行为的作用机理。同时,对于广泛使用污染严重的化合物(如除草剂、杀虫剂、洗涤剂等), 在已有的 2D-QSAR 研究基础上,进行 3D-QSAR 分析,进而了解化合物产生毒性的部位和发挥用途的机 制,挑选出高效低毒的化合物,可达到减少污染的目的。使用 3D-QSAR 的方法,还可以了解污染物在与 蛋白质和核酸等生物大分子结合、作用(从而导致癌变等病理情况)的过程中其三维结构所扮演的角色, 更加深入的研究污染物在生物体内的作用途径,这对揭示人类的衰老、疾病机制,维护人类健康将发挥重 要作用。 QSAR模型内部与外部验证方法综述 最近几十年,国内外大量文献报道定量结构-活性/属性相关(QSAR/OSPR)模型,王连生教授作为我国有机污染物定量构效关系研究领域的开创者,为我国的 QSAR 研究做出了突出的贡献。 经济合作与发展组织(OECD)提出 QSAR 模型需遵循5个法则: 1、确定的终点 2、明确的运 算方法 3、定义应用范围 4、适当验证模型拟合优度、稳健性和预测能力 5、如果可能,进行机理解释。建立QSAR 模型的目的通常是为了: 预测未测定或新化合物的生物活性 确定哪些分子结构属性决定化合物的生物活性,例如,在药物学研究中,通过 QSAR 研究可以修改药物分子结构进而提高药效或更进一步理解生物学机理 为此,下面将详细综述 QSAR 模型的内部验证和外部验证方法,为 QSAR 建模者提供指导与帮助。这些内部验证和外部验证可作为 QSAR 的验证方法,以保证回归模型的可靠性和有效性。 一、QSAR模型内部验证方法 严格的 QSAR 模型验证程序应包括内部验证和外部验证.内部验证方法包括留一法(LOO)交叉验证、留多法(leave-manv-out.LMO)或留N法(leave-N-out.LNO)交叉验证、随机化验证和自举法等。 1、LOO 交叉验证 LOO 交叉验证是模型内部验证最简单的方法之一。假设对于含n个样本的数据集,LOO 交叉验证步骤如下: 1)抽出第1个样本作为外部检验样本,余下的n-1 个样本作为训练集建立回归模型,并用这个模型去预测抽出的作为外部检验样本的因变量值。 2)将第1个样本放回原样本数据集,依次抽出第2个样本作为外部检验样本,同样以余下的n-1 个样本作为训练集建立回归模型,并预测第2个样本的因变量值。 3)将第2个样本放回原样本数据集。依次按照“抽出1个样本→余下样本建模一预测抽出样本一放回抽出样本”的顺序对原样本集进行操作,直到所有样本均被抽出一次并进行预测为止。 4)完成 LOO 交叉验证后。计算n次抽出样本的因变量 LOO 预测值(γ)与原抽出样本的因变量实验 值(r)之间的相关系数( O₂)及 LOO 交叉验证均方根误差(RMSECV),以评价模型内部预测能力。 2、LMO/LNO 交叉验证 LMO 或 LNO 交叉验证也是检验模型稳健性的另一种方法。LMO 与 LOO 的区别是 LMO 的计算过程每次从数据集中抽出多个样本,用剩余的样本建模并预测被抽出的多个样本,该过程重复多次。 在LOO交叉验证中,对于样本数为n的训练集,需要n次交叉验证,在LMO交叉中,训练集中n个 样本的顺序对 LMO 的结果将产生一定的影响。假设取 M =2,即 L20 交叉验证,对于给定顺序的n个样本训练集,需要进行 n/2 次交叉验证并获得 n/2 个模型。然而,该验证仅是所有可能2个样本组合中(n/(n-2))的一种组合。因此,Kiralj 和 Ferreira 建议将数据集中样本随机排序后再进行 LMO 交叉验证。在一些 LMO 交叉验证中,数据集进行多次随机化(如 10 次),取多个Q…值的平均值和标准偏差作为评价模型的稳健性。在 LMO 交叉验证中,M 的取值目前仍然没有固定的说法。对于大数据集,M可以取较大的数值,只要剩余的样本数足够用于建立一个有意义的模型,对于中度或较小的数据集(n<50),M的取值不应过大,最好的 LMO 交叉验证是 LMO 30%(M=nx30%,n为数据集样本数)。 3、γ随机化验证 随机化验证是确保模型稳健性常用的方法,其目的是检验因变量和自变量之间的偶然相关。在该验证中,因变量Y被随机排序并使用原始自变量矩阵X建立新的模型,该过程重复多次,例如随机化 10-25 次。可以期望,产生的 QSAR 模型通常应具有低的 R(v随机化相关系数)和低的 LOO 交 叉验证O值(v随机化O)如果v随机化得到的所有模型都具有高的R,和O 值那么意味着对于给定的数据集,用当前的建模方法不可能得到一个可接受的 QSAR 模型。 4、自举法 自举法的基本假设是抽出总体样本的代表性数据集,在一个典型的自举法验证中从原始数据集中随机选择K组且每组的样本数都为 m。某些样本可能被多次选取,而其它的一些样本不会被选择。对于m个随机选择样本建立的模型用来预测那些被排除在外样本的活性。在一个典型的模型验证中,重复抽取 10-25 次已足够。自举法验证中获得高的平均相关系数(R₂和Q),则表明模型具有高的稳健性。 二、QSAR模型外部验证方法 模型外部验证的最好办法是利用具体代表性和足够大的检验集(也称为预测集)来验证,并且该检验集的预测值可以与观测值(实验值)相比较。外部验证通常把整体数据集拆分为训练集(training set)和检验集(test set)用检验集验证训练集模型。Tropsha将整体数据集拆分为训练集、检验集和外部验证集(external validation sets)进而验证模型的预测能力,模型外部预测能力通过不同统计量或方法进行评价,这些统计量包括 Q₂(或R)、Golbraikh和 Tropsha 方法等,不同统计量的数学表达式详细列于下表。 此外,Golbraikh 和Tropshal提出4个条件(简称 Golbraikh和Tropsha方法)评价检验集预测值与观测值之差,对于检验集,他们推荐使用下列统计特征,预测与观测活性之间的相关系数R应接近于1相关系数R和R(预测对观测活性的R和观测对预测的 R₂)至少一个(最好两个)接近于R;通过 原点的回归线斜率k和k'应该接近于1。该方法的相关统计量表达式详见表。 三、统计量参考数值 利用上表中的统计量评价 QSAR 模型的内部预测能力和外部预测能力,当统计量的数值满足一定条件时,则认为模型可接受。根据文献中的经验值,统计量的参考数值列于如下: 1、模型样本数和变量数的比值建议大于等于 5 ∶ 1 0. 6,Q₂大于 0. 5 认为模型好,大于 0. 9 则模型优秀 Q₂,校正均方根误差(RMSEC) < 交叉验证均方根误差(RMSECV);R₂、Q₂< 0. 3,如果差值大于 0. 3,则模型过拟合和有不相关的自变量或数据有离群值 Q₂ yrand;原始 Y 与随机化后 Y 的 Pearson 相关系数的绝对值|r|与 R₂yrand 的回归线的截距(aR)小于 0. 3,|r|与 Q₂ yrand 的回归线的截距(aQ)小于 0. 05 5、Roy 的 r₂m 统计参数:Δr₂m 0. 5 四、评价 QSAR模型验证方法 一个可接受的 QSAR/ QSPR 模型,其必备条件之一是具有高的估计相关系数(R₂)和低的标准偏差。然而高的 R₂和低的标准偏差对模型的验证是不够的,因为回归模型可能包含很多参数。相关系数可能并不能反映变量间的真实关系,相关系数与样本数和自变量数有关。大量样本,其相关系数较小,但可能很显著。小量样本(例如小于 10),其相关系数较高,但可能不显著。相同的样本数,自变量数增加,模型 R₂值增加(最大等于 1)。因此,必须验证 QSAR 模型的稳定性和预测能力。 对于一个 QSAR 模型,数据集(包括样本数、自变量和因变量等)应该满足一定条件,才能保证模型具有显著的统计意义和可预测能力。 1、所有化合物的活性值(因变量)分布不能集中一点或两点,活性值应该均匀分布且具有变化较大的特点 2、应该避免使用少量样本建模,少量样本不能满足数据变化较大的特征,可能导致模型存在偶然相关和较低数值的统计量 3、线性回归模型不应包含太多的描述符(自变量),从而使得模型解释更加复杂。对于多元线性回归模型,一般认为样本数和描述符数的比值至少大于 5 倍(Topliss 比例) 4、对于线性回归模型,描述符之间应没有明显的相关性 LOO 交叉验证是模型内部验证最常用的方法,LMO 和自举法技术也被用于 QSAR 模型内部验证。为了验证模型的稳定性,除了 LOO 或 LMO(LNO)交叉验证与自举法验证,建议使用 y 随机化方法检验 模型稳定性,通过统计量是否满足参考数值( |r| 与 R₂ yrand的回归线的截距小于 0. 3,| r | 与 Q₂ yrand的回归线的截距小于 0. 05)判定模型是否存在偶然相关。 研究表明相关系数 R₂与留一法(LOO)交叉验证相关系数(Q₂ LOO )并没有相关性。同样内部预测能力和外部预测能力之间也没有相关性。Q₂ LOO 不能用于评价模型的外部预测能力。QSAR 模型具有高的内部预测能力,但外部预测能力可能很低,反之亦然。因此,QSAR 模型必 须通过有效的外部验证, 才能保证模型对外部样本的预测能力。 总结 QSAR研究是人类最早的合理药物设计方法之一,具有计算量小,预测能力好等优点。在受体结构未知的情况下,定量构效关系方法是最准确和有效地进行药物设计的方法,根据QSAR计算结果的指导药物化学家可以更有目的性地对生理活性物质进行结构改造。在1980年代计算机技术爆炸式发展之前,QSAR是应用最广泛也几乎是唯一的合理药物设计手段。 但是QSAR方法不能明确给出回归方程的物理意义以及药物-受体间的作用模式,物理意义模糊是对QSAR方法最主要的 质 疑之一。 另外在定量构效关系研究中大量使用了实验数据和统计分析方法,因而QSAR方法的预测能力很大程度上受到试验数据精度的限制,同时时常要面对“统计方法欺诈”的质 疑。
  • 热度 4
    2022-12-29 14:37
    1134 次阅读|
    0 个评论
    机器学习 | 稳定学习 | DGBR 深度学习 | 迁移学习 | 因果学习 众所周知,深度学习研究是机器学习领域中一个重要研究方向,主要采用数据分析、数据挖掘、高性能计算等技术,其对服务器的要求极其严格,传统的风冷散热方式已经不足以满足散热需要,这就需要新兴的液冷散热技术以此满足节能减排、静音高效的需求。机器学习除了在深度学习研究领域有其很大的发展,在因果学习、虚拟仿真、医药研发等领域也有很大的提高。尽管机器学习在很多领域都取得了成功,但是虚假相关带来的潜在风险还是限制了这些模型在不少风险敏感领域的应用。这时稳定学习被提出来应对这个挑战,它试图在不影响模型性能的情况下构建更加可信的机器学习模型。 今年2月23日,清华大学计算机系崔鹏副教授与斯坦福大学Susan Athey(美国科学院院士,因果领域国际权威)合作,在世界顶级期刊Nature Machine Intelligence(影响因子IF=15.51,2020)上发表了一篇题为“Stable Learning Establishes Some Common Ground Between Causal Inference and Machine Learning”(稳定学习:建立因果推理和机器学习的共识)的观点论文,深入探讨和总结了因果推理在机器学习和人工智能领域的关注,提出机器学习和因果推理之间应该形成共识,稳定学习正在向这个目标迈进。基于上述学术观点,本文总结了稳定学习的一系列进展。 人工智能当前面临的挑战 纵观人工智能(AI)技术的发展史,在过去的20年中,人工智能的进步紧密伴随着互联网经济的发展,在诸如网上搜索、推荐商品等众多场景中都有人工智能技术的运用。在这些场景中,AI做出错误决策的危害较小(比如推荐了用户不感兴趣的商品),使用者对AI模型算法的稳定性和可靠性要求相对较低。如今,AI技术逐渐渗透进了包括医疗、司法、运输等与民众生活紧密相关,对人类的生存和发展有重大影响的领域中。在这样的背景下,AI模型的可靠性和稳定性问题变得日益重要,也很大程度上决定了我们能在多大程度上利用和依赖人工智能技术帮助决策。 我们认为,当前人工智能模型在实践利用中存在两个重要问题。一是模型缺乏可解释性;也即人们无法理解模型做出判断的逻辑和原因。这就导致人们面对模型的决策时,只能无条件地完全肯定或否定其提供的答案,我们认为可以通过建立人机协作(human in the loop)的机制合作决策解决这个问题。第二个问题则是模型缺乏在位置环境下性能的稳定性;目前大多数人工智能模型依赖于iid假设(Independent and identically distributed), 即训练数据集和测试数据集的数据分布是相似的;而在实际运用中,无法完全预见可能出现的数据分布(无法了解测试数据集的分布),此时模型的性能无法保证。本文将重点解决模型在未知环境下的性能稳定性问题。 以识别图片中是否存在狗的人工智能应用为例。图中的左图是训练集中包含狗的图片集,其中大多数图片的背景是草地。而在测试集中,模型对同样为草地背景的图片有良好的判断力(右图上);对非草地背景的图片判断准确度下降(右图中、下)。 人工智能识别图片中的狗任务训练集(左),测试集结果(右) 因果学习新进展 深度稳定学习 目前深度学习在很多研究领域特别是计算机视觉领域(如图像识别、物体检测等技术领域)取得了前所未有的进展,而深度模型性能依赖于模型对训练数据的拟合。当训练数据(应用前可获取的数据)与测试数据(实际应用中遇到的实例)分布不同时,传统深度模型对训练数据的充分拟合会造成其在测试数据上的预测失败,进而导致模型应用于不同环境时的可信度降低。为了解决模型在分布迁移下的泛化问题,崔鹏老师团队提出深度稳定学习,提高模型在任意未知应用环境中的准确率和稳定性。 独立同分布学习、迁移学习和稳定学习 上图给出了常见的独立同分布模型、迁移学习模型和稳定学习模型的异同。独立同分布模型的训练和测试都在相同分布的数据下完成,测试目标是提升模型在测试集上的准确度,对测试集环境有较高的要求;迁移学习同样期望提升模型在测试集上的准确度,但是允许测试集的样本分布与训练集不同。独立同分布学习和迁移学习都要求测试集样本分布已知。而稳定学习则希望在保证模型平均准确度的前提下,降低模型性能在各种不同样本分布下的准确率方差。理论上稳定学习可以在不同分布的测试集下都有较好的性能表现。 一、基于本质特征的稳定学习 现有深度学习模型试图利用所有可观测到的特征与数据标签的相关性进行学习和预测,而在训练数据中与标签相关的特征并不一定是其对应类别的本质特征。深度稳定学习的基本思路是提取不同类别的本质特征,去除无关特征与虚假关联,并仅基于本质特征(与标签存在因果关联的特征)作出预测。如下图所示,当训练数据的环境较为复杂且与样本标签存在强关联时,ResNet等传统卷积网络无法将本质特征与环境特征区分开来,所以同时利用所有特征进行预测,而StbleNet则可将本质特征与环境特征区分开来,并仅关注本质特征而忽略环境特征,从而无论环境(域)如何变化,StableNet均能做出稳定的预测。 传统深度模型与深度稳定学习模型的saliency map,其中亮度越高的点对预测结果的贡献越大,可以看到两者特征的显著不同,StableNet更关注与物体本身而传统深度模型也会关注环境特征 目前已有的稳定学习方法多针对线性模型,通过干扰变量平衡(Confounder Balancing)的方法来使得神经网络模型能够推测因果关系。具体而言,如果要推断变量A对变量B的因果关系(存在干扰变量C),以变量A是离散的二元变量(取值为0或1)为例,根据A的值将总体样本分为两组(A=0或A=1),并给每个样本赋予不同的权重,使得在A=0和A=1时干扰变量C的分布相同(即D(C|A=0) = D(C|A=1),其中D代表变量分布),此时判断D(B|A=0) 和D(B|A=1)是否相同可以得出A是否与B有因果关系。 而在计算机视觉相关的场景中,由于经卷积网络后的各维特征为连续值且存在复杂的非线性依赖关系,无法通过直接应用上述干扰变量平衡方法来消除特征间的相关性;另外由于用于深度学习的训练数据集通常尺寸较大,深度特征的维度也较大,所以无法直接计算出全局的样本权重。本文要解决的问题,就是如何在深度学习网络中找到一组样本权重,使得所有变量之间都可以做到互相独立,即任意选取一个变量为目标变量,目标变量的分布不随其它变量的值的改变而改变。 二、基于随机傅立叶特征的深度特征去相关 去除特征间相关性的基本思路是干扰变量平衡,其基本原理如下图所示: 样本变量之间独立性函数(图左);神经网络优化公式(图右) 而深度网络的各维特征间存在复杂的依赖关系,仅去除变量间的线形相关性并不足以完全消除无关特征与标签之间的虚假关联,所以一个直接的想法就是通过kernel(核方法)将映射到高维空间,但是经过kernel映射后原始特征的特征图维度被扩大到无穷维,使得各维变量间的相关性无法计算。鉴于随机傅立叶特征(Random Fourier Feature, RFF)在近似核函数以及衡量特征独立性方面的优良性质,本文采用RFF将原始特征映射到高维空间中(可以理解为在样本维度进行扩充),消除新特征间的线形相关性即可保证原始特征严格独立,如下图所示。 用于独立性检测的随机傅立叶特征(图左);StableNet网络与样本权重更新(图右) 三、全局优化样本权重 上述公式要求在训练过程中为每个训练样本都学习一个特定的权重,但在实践中,尤其对于深度学习任务,要想利用全部样本全局地学习样本权重需要巨大的计算和存储开销。此外,使用SGD对网络进行优化时,每轮迭代中仅有部分样本对模型可见,因此无法获取全部样本的特征向量。本文提出了一种存储、重加载样本特征与样本权重的方法,在每个训练迭代的结束融合并保存当前的样本特征与权重,在下一个训练迭代开始时重加载,作为训练数据的全局先验知识优化新一轮的样本权重,如下图所示。 全局先验知识(图左);先验知识更新(图右) StableNet的结构图如下图所示,输入图片经过卷积网络后提取得视觉特征,后经过两个分支。其中上方分支为样本权重学习子网络,下方分支为常规分类网络。最终训练损失为分类网络预测损失与样本权重的加权求和。其中LSWD为去相关样本权重学习模块(Learning Sample Weights for Decorrelation),利用RFF学习使特征各维独立的样本权重。 StbelNet结构图 以识别狗的应用为例,如果训练样本中大部分的狗在草地上,少部分的狗在沙滩上,图片相应的视觉特征经样本重加权后各维独立,即狗对应的特征与草地、沙滩对应的特征在统计上不相关,所以分类器在预测狗是否存在时更容易关注与狗相关的特征(若关注草地、沙滩等特征会造成预测损失激增),所以测试时无论狗在草地上或沙滩上与否,StableNet均能依据本质特征给出较准确的预测,实现模型在OOD数据上的泛化。 StbelNet训练流程 四、含义更广泛的域泛化任务 在常规的域泛化(DG)任务中,训练集的不同源域容量相近且异质性清晰,然而在实际应用中,绝大部分数据集都是若干潜在源域的组合,当源域异质性不清晰或未被显式标注时,我们很难假定来自于各源域的数据数量大致相同。为了更加全面地验证StableNet的泛化性能,本文提出三种新的域泛化任务来仿真更加普适且挑战性更强的分布迁移泛化场景。 1、不均衡的域泛化 对于源域不明确的域泛化问题,假定源域容量相近过于理想化,一个更普适的假设为来自不同源域的数据量可能不同且可能差异巨大。在这种情况下,模型对于未知目标域的泛化能力更满足实际应用的需求。例如在识别狗的例子中,我们很难假定背景为草地、沙滩或水里的图片数量相同,实际情况下狗较多地出现在草地上而较少出现在水里。这就要求模型的预测不能被经常与狗一起出现的背景草地误导,所以本任务的普适性和难度显著高于均衡的域泛化。 使用ResNet18作为特征提取网络的实验结果如下表,在PACS和VLCS数据集上StableNet取得了最优性能。 不均衡的域泛化实验结果 2、部分类别缺失的域泛化 我们考虑一种挑战性更大且在现实场景中经常存在的情况,某些源域中有部分类别的数据缺失,而在测试集中模型需要识别所有类别。例如,鸟经常出现在树上而几乎不会出现在水里,鱼经常出现鱼缸里而几乎不会出现在树上,所以并不是所有源域都一定包含全部类别。这种场景要求更高的模型泛化能力,由于每个源域中仅有部分类别,所以域相关的特征与标签间的虚假关联更强且更易误导分类器。 下表为实验结果,由于对域异质性及类别完整性的要求,很多现有域泛化方法无法显著优于ResNet,而StableNet在PCAS,VLCS及NICO上均取得了最优结果。 部分类别缺失的域泛化实验结果 3、存在对抗的域泛化 一种难度更大的场景是任一给定类别的主导源域与主导目标域不同。例如,训练数据中的狗大多在草地上而猫大多在室内,而测试数据中的狗大多在室内而猫大多在草地上,这就导致如果模型不能区分本质特征与域相关特征,就会被域信息所误导而做出错误预测。下表为在MNIST-M数据集上的实验结果,StableNet仍显著优于其他方法,且可见随主导域比例升高,ResNet的表现显著下降,StableNet的优势也越发明显。 存在对抗的域泛化实验结果 稳定学习的主要方法 DGBR算法首次解决了二元预测变量(特征)和二元离散响应变量设定下的稳定预测问题。此后,人们提出一系列稳定学习方法以解决不同设置下更稳定的预测问题。但后续设计的稳定学习方法不仅仅局限于因果推理的角度,包括统计学习、优化过程等不同视角,本部分将一一介绍。 一、基于样本加权的变量去相关 崔鹏团队进一步探讨了模型错估(即模型与数据生成机制不一致)的稳定预测问题。Zheyan Shen等人研究了线性模型中变量间的共线性如何影响预测稳定性,提出了一种通用的数据预处理方法,通过对训练集样本重新加权来去除预测变量(特征)间的相关性,以减少共线性影响。况琨等人的工作进一步改进了DGBR算法,提出了去相关加权回归(DWR),将变量去相关正则化与加权回归模型相结合,解决了连续预测变量(特征)设置下模型的稳定预测问题。 去除所有变量之间的相关性固然是找到因果相关,平衡协变量并实现稳定预测的好主意,它的代价是大大降低了有效样本量,而这在机器学习训练中是灾难性的。Zheyan Shen等人通过使用来自不同环境的未标注数据,提出了一种基于变量聚类的变量分解的算法,称为区分性变量去相关(Differentiated Variable Decorrelation, DVD)。这个方法是注意到保留因果性变量之间的相关性未必会导致模型在未知环境中的性能不稳定。以特征间相关性的在训练集数据和未标注之间的数据稳定性作为聚类的指标,可以将预测变量(特征)进行聚类并为不同的聚类簇,其中一些聚类簇代表了对相应变量具有因果效应的特征集合。在平衡混淆变量时只需要隔离这些聚类簇即可。由于聚类簇的数量远低于特征的维度,因此DVD与样本加权方法DWR相比,保持了更高的有效样本量。 与不加区分地去除所有变量的相关性的方法(DWR)相比,区分性变量去相关方法(DVD)在相同设定下具有更大的有效样本量 二、对抗稳定学习 由于人们总是想最大化地利用训练数据中发现的所有相关性,具有经验风险最小化的机器学习算法在分布变化下很容易受到攻击。崔鹏老师团队提出了稳定对抗学习 (Stable Adversarial Learning, SAL) 算法,以一种更有原则和统一的方式来解决这个问题,该算法利用异构数据源构建更实用的不确定性集并进行差异化鲁棒性优化,其中协变量根据其与目标相关性的稳定性进行区分。 具体来说,该方法就是采用了Wasserstein分布式鲁棒学习(Wasserstein distributionally robust learning, WDRL)的框架。根据协变量在多个环境中的稳定性,进一步将不确定性集表征为各向异性,这会给不稳定协变量带来比稳定协变量更强的对抗性扰动。并且设计了一种协同算法来联合优化协变量的微分过程以及模型参数的对抗训练过程。 在实验中,将SAL算法与经验风险最小化 (Empirical Risk Minimization, ERM) 框架、Wasserstein分布式鲁棒学习 (Wasserstein distributionally robust learning, WDRL) 框架、不变风险最小化 (Invariant Risk Minimization, IRM) 框架进行比较: (a)各环境下的测试性能 (b) 关于半径的测试性能 (c) S和V相对于半径的学习系数值 实验结果表明,SAL算法各向异性地考虑每个协变量以获得更真实的鲁棒性。此外,构造了一个更好的不确定集,在不同的分布的数据上取得了一致更好的表现,验证了算法的有效性。 三、异质性风险最小化 同样,如果要充分利用训练数据中发现的所有相关性,经验风险最小化的机器学习算法通常泛化性能很差,而且这些相关性在分布的变化下是不稳定的。崔鹏老师的团队提出了异质性风险最小化(HRM)的框架,以实现对数据之间潜在的异质性和不变关系的联合学习,从而实现在分布变化的情况下的稳定预测。 HRM框架 整体框架如图所示。该框架包含两个模块,用于异质性识别的前端和用于不变预测的后端Mp。给定异质性数据,从异质性识别模块Mc出发,用学习变量ψ (x)表示异质性环境εlearn。然后,分布外一般化预测模块Mp使用所学习的环境来学习MIP φ (x)和不变预测模型F (φ (x))。之后,我们推导出变型ψ (x)来进一步增强模Mc。至于“转换”步骤,基于我们的设置,我们在这项工作中采用了特征选择,通过它可以在学习更多不变特征时获得更多的变异特征。 HRM是一种优化框架,可实现数据和不变预测器之间潜在异质性的联合学习。尽管分布发生变化,在该框架下仍具有更好的泛化能力。 为了验证该框架的有效性,崔鹏老师团队将HRM框架与经验风险最小化 (Empirical Risk Minimization, ERM) 框架、分布鲁棒优化 (Distributionally Robust Optimization, DRO) 框架、不变学习的环境推理 (Environment Inference for Invariant Learning, EIIL) 框架、具有环境εtr标签的不变风险最小化 (IRM) 框架进行比较。 实验表明,与基线方法相比,HRM在平均性能和稳定性方面取得了近乎完美的表现,尤其是跨环境损失的方差接近于0。此外,HRM不需要环境标签,这验证了我们的聚类算法可以挖掘数据内部潜在的异质性。 继续进行了三个真实场景的预测,包括汽车保险预测、人们收入预测和房价预测。 真实场景的预测结果 (a) 汽车保险预测的训练和测试准确性。左子图显示了5种设置的训练结果,右子图显示了它们对应的测试结果。(b) 收入预测的误分类率。(c) 房价预测的预测误差。 从实验结果可以看出,在所有任务和几乎所有测试环境中,HRM始终保持最佳性能。HRM可以有效地揭示和充分利用训练数据的内在异质性进行不变学习。HRM放宽了对环境标签的要求,为不变学习开辟了新的方向。它能够涵盖广泛的应用,例如医疗保健、金融、营销等。 四、稳定学习的理论解释 协变量偏移泛化是分布外泛化 (OOD) 中的典型案例,它要求在未知测试分布上具有良好的性能,并且该测试分布与训练分布差距体现在协变量迁移上。在涉及回归算法和深度神经网络的几种学习模型上,稳定的学习算法在处理协变量移位泛化方面已经显示出一定的有效性。崔鹏老师团队通过将稳定学习算法解释为特征选择的过程,向理论分析迈进了一步。 具体是这样的,首先定义一组变量,称为最小稳定变量集(minimal stable variable set),它是处理常见损失函数(包括均方损失和二元交叉熵损失)下的协变量迁移泛化的最小且最优的变量集合。然后证明了在理想条件下,稳定的学习算法可以识别出这个集合中的变量。这些理论阐明了为什么稳定学习适用于协变量迁移泛化。 典型稳定学习算法的框架如图所示。该算法通常包括两个步骤,分别是重要性采样和加权最小二乘。在理想条件下,稳定学习算法可以识别最小稳定变量集,这是可以在协变量偏移下提供良好预测的最小变量集。 最小稳定变量集与马尔可夫边界密切相关,稳定学习在一定程度上有助于识别马尔可夫边界。此外,如果以协变量移位泛化为目标,马尔可夫边界不是必需的,而最小稳定变量集是充分且最优的。 与马尔可夫边界相比,最小稳定变量集可以带来两个优势: ① 条件独立性检验是精确发现马尔可夫边界的关键。 ② 在几个常见的机器学习任务中,包括回归和二元分类,并不是所有的变量都在马尔可夫边界。最小稳定变量集被证明是马尔可夫边界的子集,它排除了马尔可夫边界中无用的变量,用于协变量移位泛化。 稳定学习的应用 一、图上的稳定学习 1、具有选择性偏差的多个环境中学习稳定图 如今,图已成为一种通用且强大的表示,通过其结构中编码的底层模式来描述不同类型实体之间的丰富关系。然而,图生成的数据收集过程充满了已知或未知的样本选择性偏差,尤其是在非平稳和异构的环境中,实体之间会存在虚假关联。针对从具有选择性偏差的多个环境中学习稳定图的问题,崔鹏老师团队设计了一个无监督的稳定图学习 (Stable Graph Learning, SGL) 框架,用于从集合数据中学习稳定图,该框架由GCN (Graph Convolutional Networks) 模块和针对高维稀疏集合数据的E-VAE (element-wise VAE) 模块组成。 稳定图学习的任务是学习一个表示无偏连接结构的图Gs,因为环境中的图是从数据生成的,如果数据的收集过程来自具有选择性偏差的环境,则元素之间的虚假相关性会导致图在其他环境中表现不佳。SGL框架能很好地解决这个问题,SGL框架可以分解为两个步骤,包括基于图的集合生成和稳定图学习。稳定图学习过程图解如下图所示。 稳定图学习的过程图解 在模拟实验中,如图所示,在几乎所有的实验中,SGL框架的性能要稳定得多,特别是当两个环境之间的差异更显着时,它比所有基线方法都达到更高的平均准确度。 模拟实验结果。每个子图对应一个实验,紫色曲线表示SGL框架生成的图Gs的实验表现 而相应地,在真实实验里,崔鹏老师团队研究了商品推荐的常见实际应用中的稳定图结构问题。 从下表可以看出,SGL框架生成的图Gs可以平衡两种环境下的相关性,更稳定地达到最高平均预测率。 使用从商品网络中学习的项目嵌入进行带有曝光偏差的购买行为预测 如下表所示。SGL框架可以很好地弥补单一环境下的信息损失,通过学习商品之间的本质关系,生成整体性能最佳的图Gs。 使用从商品网络中学习到的项目嵌入来预测不同性别群体的购买行为 图生成的数据选择性偏差可能导致有偏差的图结构在Non-I.I.D.场景中性能不佳。针对该问题提出的SGL框架可以提高学习图的泛化能力,并能很好地适应不同类型的图表和收集的数据。 2、具有不可知分布偏移的图的稳定预测 图神经网络 (Graph Neural Networks, GNNs) 已被证明在具有随机分离的训练和测试数据的各种图任务上是有效的。然而,在实际应用中,训练图的分布可能与测试图的分布不同。此外,在训练GNNs时,测试数据的分布始终是不可知的。因此,大家面临着图学习训练和测试之间的不可知分布转变,这将导致传统GNNs在不同测试环境中的推理不稳定。 为了解决这个问题,浙江大学况琨老师团队提出了一种新的GNNs稳定预测框架,它允许在图上进行局部和全局稳定的学习和预测,可以减少异构环境中的训练损失,从而使GNNs能够很好地泛化。换句话说,是为GNNs设计了一种新的稳定预测框架,该框架能捕获每个节点的稳定属性,在此基础上学习节点表示并进行预测(局部稳定),并规范GNNs在异构环境中的训练(全局稳定)。该方法的本质如图所示。 整体架构 由两个基本组成部分组成,即在每个目标节点的表示学习中捕获跨环境稳定的属性的局部稳定学习,以及显式平衡不同训练的全局稳定学习环境。 在图基准实验中,浙江大学况琨老师团队使用OGB数据集和传统基准Citeseer数据集,构建两层GCN和GAT。所有其他方法(包括我们的方法)也包含两个图形层以进行公平比较。OGBarxiv的所有方法的隐藏层神经节点个数为250,Citeseer的隐藏层神经节点个数为64,学习率为0.002。 稳定预测框架有着更稳定的实验结果。当测试分布与训练分布的差异更大时,大多数GNNs会遭受分布变化并且产生较差的性能(例如,图a的右侧)。尽管稳定预测框架在分布更接近训练的测试环境中牺牲了一些性能(例如,图a的左侧),但获得了显着更高的 Average_Score 和更低的 Stability_Error。 在OGB-Arxiv数据集上的测试结果 在Citeseer数据集上的测试结果 为了证明稳定预测框架在实际应用中的有效性,浙江大学况琨老师团队收集真实世界的嘈杂数据集,对推荐系统的用户-项目二分图进行了实验。实验结果表明,稳定预测框架比其他基线方法取得了明显更稳定的结果。 具有由节点属性引起的分布偏移的真实世界推荐数据集的结果 具有真实世界环境的推荐数据集的结果(每天作为一个单独的环境) 二、深度神经网络中的稳定学习 基于深度神经网络的方法在测试数据和训练数据共享相似分布时取得了惊人的性能,但有时可能会失败。因此,消除训练和测试数据之间分布变化的影响对于构建性能有希望的深度模型至关重要。崔鹏老师团队建议通过学习训练样本的权重来消除特征之间的依赖关系来解决这个问题,这有助于深度模型摆脱虚假关联,进而更多地关注判别特征和标签之间的真正联系。 崔鹏老师团队提出了一种称为StableNet的方法。该方法通过全局加权样本来解决分布偏移问题,以直接对每个输入样本的所有特征进行去相关,从而消除相关和不相关特征之间的统计相关性。这是一种基于随机傅立叶特征 (Random Fourier Features, RFF) 的新型非线性特征去相关方法,具有线性计算复杂度。同时,它也是有效的优化机制,通过迭代保存和重新加载模型的特征和权重来全局感知和消除相关性,还能在训练数据量大时减少存储的使用和计算成本。此外,如图16所示,StableNet可以有效地剔除不相关的特征(例如,水)并利用真正相关的特征进行预测,从而在野外非平稳环境中获得更稳定的性能。 当识别狗的训练图像包含很多水时,StableNet模型主要关注于狗 StableNet的整体架构 为了涵盖更普遍和更具挑战性的分布变化案例,崔鹏老师团队在实验中采用如下四种设置:非平衡、灵活、对抗、经典。在不同的实验设置下,StableNet都能不同程度得优于其他方法。 在消融研究中,通过随机选择用于计算具有不同比率的依赖关系的特征来进一步降低特征维度。下图显示了具有不同维度随机傅里叶特征的实验结果。 消融研究的结果 图像分类模型的一种直观解释是识别对最终决策有很大影响的像素。所以,在显着性图像上,为了演示模型在进行预测时是关注对象还是上下文(域),对类别得分函数相对于输入像素的梯度进行了可视化。可视化结果如图所示。 StableNet的显着性图像。像素越亮,它对预测的贡献就越大 各种实验结果表明,StableNet方法可以通过样本加权消除相关和不相关特征之间的统计相关性,进而有效剔除不相关的特征并利用真正相关的特征进行预测。 三、稳定学习与公平性 如今,公平问题已经成为了决策系统中的重要问题。已经有很多学者提出了各种公平的概念来衡量算法的不公平程度。 珀尔研究了伯克利大学研究生入学性别偏见的案例。 数据显示,总体而言,男性申请人的入学率较高,但在研究院系选择时,结果有所不同。 由院系选择引起的偏差应该被认为是公平的,但传统的群体公平观念由于没有考虑院系选择而无法判断公平。 受此启发,基于因果关系的公平理念应运而生。 在这些论文中,作者首先假设了特征之间的因果图,然后,他们可以将敏感属性对结果的不公平因果效应定义为一个度量。 然 而,这些公平性概念需要非常有力的假设,而且它们不可扩展。 在实践中,经常存在一组我们称之为公平变量的变量,它们是决策前的协变量,例如用户的选择。 公平变量并不会影响评估决策支持算法的公平性。因此,崔鹏老师团队通过设置公平变量将条件公平定义为更合理的公平度量。通过选取不同的公平变量,崔鹏老师团队证明了传统的公平概念,例如统计公平和机会均等,是条件公平符号的特例。并且提出了一种可求导的条件公平正则化器(Derivable Conditional Fairness Regularizer, DCFR),它可以集成到任何决策模型中,以跟踪算法决策的精度和公平性之间的权衡。 DCFR的框架 为了公平比较,在实验中,选择也使用对抗性表示学习的方法来解决问题的公平优化算法作对照。有UNFAIR、ALFR、CFAIR和LAFTR,以及它的变体LAFTR-DP和LAFTR-EO。 各种数据集(从上到下依次为收入数据集、荷兰人口普查数据集、COMPAS数据集)上不同公平性指标(从左到右依次为Δ 、Δ 、Δ )的准确性-公平性权衡曲线。DCFR以粗线显示。 很明显,在实验中DCFR更有优势,在准确性和公平性上达到更好的权衡效果。对于统计公平和机会均等任务,DCFR的退化变体能有与专为这些任务设计的最先进基线方法相当的性能,有时甚至还能有更好的结果。综上所述,DCFR在真实数据集上非常有效,并在条件公平目标上取得了良好的性能。并且随着公平变量的数量增加,其表现会更好。 四、稳定学习与领域自适应 稳定学习最初的定义是不需要目标域信息的,这里的领域自适应是一种利用了目标域信息的做法,可以理解为拓展了最初的稳定学习的含义。 研究表明,深度神经网络学习到的表征可以转移到我们没有充足标记数据的其他领域中,并进行类似的预测任务。然而,当我们过渡到模型中的更高神经层时,表征变得更加适用于特定任务而不通用。关于这个问题,深度域适应的研究提出通过强制深度模型学习更多跨域可迁移的表征来缓解。这其实是通过将域适应方法整合到深度学习管道中来实现的。然而,相关性并不总是可转移的。亚利桑那州立大学(Arizona State University,ASU)刘欢老师团队提出了一个用于无监督域适应 (Deep Causal Representation learning framework for unsupervised Domain Adaptation, DCDAN) 的深度因果表示学习框架,以学习用于目标域预测的可迁移特征表示,如图22所示。其实就是使用来自源域的重新加权样本来模拟虚拟目标域,并估计特征对结果的因果影响。 DCDAN概述 DCDAN由一个正则化项组成,该正则化项通过平衡从数据中学习到的特征表示的分布来学习源数据的平衡权重。这些权重的设计有助于模型捕捉特征对目标变量的因果影响,而不是它们的相关性。此外,我们的模型包括深度神经网络的加权损失函数,其中每个样本的权重来自正则化项,损失函数负责学习预测域不变特征,以及将学习到的表征映射到输出的分类器或因果机制。将学习组件的样本权重嵌入到模型的管道中,并将这些权重与表征联合学习,这样不仅可以从深度模型中受益,还能学习对目标具有可转移性和良好预测效果的因果特征。 DCDAN生成的数据集中样本示例(EQ2)和热图。(a)显示了来自数据的示例图像,图23(b)显示了从VQA-X数据集中提取的图23(a)的因果特征的基本事实,图23(c) 显示了DCDAN为因果表征生成的热图 为了验证该框架的有效性,亚利桑那州立大学(Arizona State University,ASU)刘欢老师团队将ResNet-50、DDC、DAN、Deep CORAL、DANN、HAFN设置为对照方法来进行实验。 DCDAN和Resnet-50 在VQA-X数据子集上生成的热图 在实验中,DCDAN在许多情况下优于基线方法,结果表明DCDAN可以执行无监督的域自适应,显示了它在学习因果表示方面的有效性。而且这还验证了因果特征表示有助于学习跨域的可迁移特征,进一步证实了因果损失和分类损失之间的良好权衡可以导致学习更多可转移的特征。 因果启发的稳定学习 研究进展 一、清华大学崔鹏:关于分部外泛化和稳定学习的一些思考 近年来,分布外(OOD)泛化问题广泛引起了机器学习和计算机视觉等领域研究者的兴趣。以监督学习为例,我们希望找到一个模型 f 以及其参数 θ,使得我们能够在测试数据分布上最小化 和y之间损失的期望。 原则上说,我们测试时的数据分布是未知的,为了对其进行优化,传统的机器学习方法认为训练数据和测试数据满足独立同分布假设,从而对问题进行简化,使我们可以在训练数据分布下搜索带有参数 θ 的函数 f。 然而,这种简化的问题设定无法满足许多实际应用场景的要求,我们往往很难保证测试时和训练时的数据分布一致。通过上述方式学习到的 缺乏理论保障,模型在真实的测试环境下的性能与实验室中训练时的性能可能相差甚远。为此,一些研究人员开始研究分布外场景下的学习问题。 根据测试时数据分布的不同,分布外学习问题衍生出了两条技术路径: (1)分布外域自适应:测试数据(目标域)部分已知,基于域自适应/迁移学习技术,将利用训练数据(源域)得到的模型适配到不同的数据分布(目标域)下 (2)分布外泛化:测试数据分布完全未知。 在传统的独立同分布学习场景下,模型泛化是一种内插(Interpolation)泛化,在分布外学习场景下,模型泛化则指的是外推(Extrapolation)。 如上图所示,在独立同分布场景下,如果 参数量太少,则模型对数据欠拟合;若参数量过多,则模型可能对数据过拟合。论文「Direct Fit to Nature:An EvolutionaryPerspective on Biological and Artificial Neural Networks」的作者认为,过参数化的深度学习网络之所以具有较好的泛化能力,可能是由于模型用类似折线的形式直接对数据点进行了拟合。 如果我们直观测到整体中很小的一部分数据,就需要对未观测到的数据进行外推。传统上,我们需要进行精巧的实验设计,基于小量的观测数据推理出分布外的情况。在这一过程中,我们会引入大量人类总结出的一些通用规律,从而 实现数据的外推。 正所谓「以不变应万变」,「不变性」(invariance)是实现外推的基础。例如:牛顿观察到苹果从树上落下,从而推导出万有引力定律,进而可以将这一规律外推到其它物体的运动上。 在独立同分布场景下,由于我们认为训练数据和测试数据分布相同,我们的目标是数据拟合,此时「相关性」自然成为了一个很好的统计指标。在 OOD 场景下,我们旨在通过以下两条路径寻找「不变性」: (1)因果推理 (2)从变化中寻找不变性 1、因果推理 因果推理是一种与不变性相关的科学。在经典的因果模型中,我们试图控制X,寻找 T 的变化对 Y 的影响。具体而言,利用观测数据,我们会通过样本重加权(Sample Reweighting)将 T=1 和 T=0 时的样本具有相似的 X 分布,如果这两种情况下的 Y 有显著变化,则 T 对 Y 有因果效应。此时,我们估计出的 T 对 Y 的因果效应平均而言对于 X的变化是具有不变性的。 为了将不变性适配到学习框架中,我们要研究多个输入变量对输出变量预测性的影响。在稳定学习框架下,我们试图找到一组合适的样本权重,进行样本重加权后再通过输入变量对输出变量进行回归,此时的回归系数即为满足因果关系的回归系数。通过上述方式训练出的模型具有 OOD 的泛化能力。 2、从变化中寻找不变性 变化与不变性是对立统一的。在机器学习场景下,数据中的「变化」指的是训练数据中存在的异质性(例如,图像背景的不同、物体品类的不同)。然而,我们无法手动定义这种数据的异质性,因为我们无法保证数据在所有的特征维度上都满足不变性约束。 因此,一种可行的方式是从潜在的异质性中寻找不变性。我们假设环境是未知的,存在一定的异质性。在这种情况下,我们首先需要发现数据中的异质性,再根据数据的异质性发现其中的不变性,接着我们还可以反过来利用不变性提升对变化部分(异质性)的学习效果,这一过程将一直迭代下去。 3、稳定学习的定位 在稳定学习框架下,我们利用一个异质的数据分布学习模型,希望将学习到的模型应用到一系列未知数据集上时具有一定的性能保证。除了通过实验证明此类模型的有效性,我们还希望为其发展出理论的支撑。 二、清华大学张兴璇:StableNet——用于分布外泛化的深度稳定学习 我们具体来讨论深度稳定学习,比如我的训练图片中是很多狗都在草地上,然后少量的狗在其他背景上时,那么它需要能及及时分辨出草地上的狗,通常这个模型可以给出比较准确的预测。但是当给到一个他建的比较少的背景,他可能就会不一定给出一个准确的预测,但大部分可能还可以给出类似的预测,但是当它出现了一个他完全没有见过的背景的时候,这个模型很有可能就给出一个错误的预测。所以说这种分布偏移的问题,会给现在的深度网络带来很大的挑战。 对于当下基于独立同分布假设开发的深度学习网络而言,若训练数据和测试数据分布不一致时,模型的泛化性能将会较差。如上图所示,假设训练集包含大量背景为草地的狗,如果在测试时面对一张站在草地上的狗的图片,网络一般可以准确地对图片进行预测;然而,如果测试图片中的背景在训练集中出现地较少或从未出现,则网络的预测效果很可能较差。这种分布偏移问题是当前的深度学习网络面临的重大挑战之一。 之所以会出现上述问题,是因为网络学习到的很可能是数据之间的相关性。在上图中,由于训练集中大量存在「狗站在草地上」的样本,因此草地的特征和狗的图像特征之间建立了关联,进而在草地的特征和狗的标签之间建立了关联,导致在测试集上对其它背景图片的预测性能有所下降。 为了解决上述问题,我们试图转而抽取因果特征(例如,部分和整体的因果关系)。在稳定学习框架下,我们重点关注的是物体本身的因果特征,而非环境的特征。 如上图所示,ResNet18(第二行)网络不仅关注狗的特征,也关注到了背景的无关特征,而 Stable Net 则主要关注狗本身的特征。 具体而言,我们采用全局平衡(Global Balancing)方法提取因果特征。给定任意的干预(treatment),我们对训练样本进行加权,从而消除各类特征之间的统计关联性,断开背景与因果特征之间的关联,最终找到更加具有因果关系的特征,实现更加稳定的预测。 先前的稳定学习方法主要针对较简单的模型(例如,线性模型)开发,考虑的问题主要是消除特征之间的线性相关性。然而,在深度网络中,各类特征之间的相关性通常是非常复杂的非线性相关性。因此,StableNet 首先将所有的特征映射到其随机傅里叶特征的空间中,该步骤将较低维度空间中的特征映射到较高维度的空间中;接着,我们在较高维度的空间中去掉各类特征的线性相关性;这样以来,我们就可以去掉原始的特征空间中特征之间的线性相关性以及非线性相关性,保证特征的严格独立。 此外,原始的全局重加权方法需要对所有的样本进行操作。然而,在深度学习场景下,训练样本量一般非常大,我们无法对全局样本进行加权。为此,我们提出了一种预存储的方式,将网络之前见过的特征和样本权重存储下来,进而在新的一轮训练中结合当前的特征进行重加权。 StableNet 的网络架构如上图如所示。网络架构有两个分支,下面的分支为基本的图像分类网络,上面的分支是对样本进行 RFF 映射后再进行重加权的过程。我们可以将两个分支分离开来,从而将StableNet 插入到任何深度学习架构中。 目前,在计算机视觉领域的域泛化任务中,我们往往假设训练数据中的异质性十分显著,且各个域的样本容量相当。这在一定程度上限制了在 CV 领域中对 OOD 泛化方法进行验证。 本文作者基于 PACS 和 VLCS 两个数据集构建了各个图片域数量不平衡的实验环境,有一些图片域占据主导地位,具有更强的虚假关联。在该设定下,StableNet 相较于对比基线具有最佳的泛化性能。 在更加灵活的 OOD 泛化场景下,不同类别的图像所处的域可能不同。在该场景下,StableNet 的性能仍优于所有的对比基线。 在对抗性 OOD 泛化场景下,域和标签的虚假关联很强(例如,训练集中的大部分数字 1 的颜色为绿色,数字 2 为黄色;在测试时两种数字的颜色与训练集中相反)。StableNet 在几乎所有的实验设定下都超过了现有的方法。 三、 浙江大学况琨:通过工具变量回归实现因果泛化 1、因果关系与稳定学习 如前文所述,现有的基于关联关系的机器学习算法存在一定的不稳定性。为此,研究者们提出了稳定预测/学习的框架,重点关注对未知的测试数据进行准确、稳定的预测。 现有的机器学习算法之所以不稳定,是因为这些算法是关联驱动的,而数据中存在大量的偏差,可能会导致模型提取出一些非因果关系的特征(虚假关联),从而导致模型不可解释、不稳定。为此,我们试图恢复出每个特征变量和标签 Y 之间的因果关系,从而找出因果特征。 2018 年,崔鹏老师、况琨老师等人提出了因果正则化技术,通过学习到全局权重使得变量之间相互独立,通过将该技术应用到逻辑回归、浅层深度网络等模型上,可以取得一定的性能提升。这种寻找因果关系的过程要求我们能够观测到所有的特征,然而有时一些因果特征是我们无法观测到的。 2、工具变量回归 在因果科学领域,研究者们以往通过工具变量(InstrumentalVariable)处理未观测到的变量。如上图所示,假设我们需要估计 T(干预)和 Y(结果)之间的因果效应,U 为未观测到的变量。工具变量 Z 必须满足以下三个条件:(1)Z 与 T 相关(2)Z 与 U 相互独立(3)Z 需要通过 T 影响 Y。 找到合适的工具变量 Z 后,我们可以通过二阶段最小二乘方法估计 T 与 Y 之间的因果效应。在第一阶段,我们根据 Z 回归 T,从而得到 ;在第二阶段,我们根据 回归 Y,从而估计出T 与 Y 之间的因果函数。在上图左下角的例子中,黄色的曲线代表直接用神经网络回归的结果,红色的曲线代表引入工具变量后通过二阶段最小二乘回归得到的结果。实验结果表明,红色的曲线对原函数的拟合程度更好。 原始的工具变量回归方法以来于一些较强的线性假设。为此,近年来一些计算机研究人员提出了非线性的工具变量回归算法(例如,DeepIV、KernelIV 等)。从理论上说,在第一阶段,我们通过 Z 和 X 回归 T,得到 ;在第二阶段,我们通过和 X 回归 Y。此时,回归函数是非线性的。 然而,在实验中,DeepIV、KernelIV 等方法的效果并没有达到预期,这是因为第一阶段的回归为第二阶段引入了混淆偏差。在这里,我们考虑将混淆因子均衡引入工具变量回归中,从而解决这种混淆偏差问题。具体而言,在第一阶段的回归之后,我们会学习一种均衡的混淆因子表征 ,使得 与 无关。接着,在第二阶段,我们通过 和 回归 Y。 在使用原始的工具变量回归方法时,我们往往需要预先定义一个工具变量。在论文「Auto IV:Counterfactual Prediction viaAutomatic Instrumental Variable Decomposition」中,况琨博士等人在给定干预 T,输出结果 Y,观测到的混淆因子 X,未观测到的混淆因子 U 的情况下,从观测到的混淆因子 X 中解耦出工具变量。尽管分理出的工具变量可能不具备明确的物理意义,但是它满足前文提到的工具变量所需要满足的三个属性。这样生成的工具变量可以帮助我们估计 T 和 Y 之间的关系。具体而言,我们通过互信息判断特征之间的条件独立性,以及表征学习实现解耦操作。 3、通过工具变量回归实现因果泛化 工具变量回归可以被用于域泛化、不变因果预测、因果迁移学习等任务中。以域泛化为例,给定来自不同观测环境中的数据,该任务旨在利用给定的 X 预测 Y。我们希望从多个数据域(环境)中学习不变性,使得预测模型对于所有可能的环境都鲁棒。 在通过工具变量回归解决域泛化问题时,首先,我们通过因果图刻画各个域中数据的生成过程(DGP)。对于域 m,在生成样本数据 X时,除了样本的域不变性特征之外,还可能受到域特定特征(例如,光照、天气)的影响;在为样本打标签时,标注者除了会考虑图片样本特征,也会受到域特定特征的影响。 在这里,我们假设各个域间具有不变性特征,且 X 和 Y 之间的关系是不变的。纵观多个域中的数据生成过程,域 n 中的样本 恰好是域 m 中样本 的工具变量,满足上述工具变量的三个特性。因此,我们可以通过工具变量回归的方式学习 X 和Y 之间的因果效应 f。 在具体的求解过程中,我们首先通过工具变量回归,即估计。接着,我们利用近似出的和学习不变性函数。值得注意的是,在通过工具变量进行域泛化时,我们只需要一个域中的标签Y,以及其它域中的无标签数据 X。 四、 清华大学刘家硕:从异质性数据到分布外泛化 1、分布外泛化的背景 经验损失风险最小化(ERM)是目前最常用的优化算法,该算法优化的是所有数据点的平均损失,所有样本的权重都是1/N。如上图所示,当数据中存在异质性时,数据集中的样本分布并不均衡。因此,通过 ERM 算法进行优化可能会更加关注出现较多的群体,而忽视出现较少的群体对损失的影响。 具体而言,在真实场景中,我们采集到的不同来源的数据分布可能不均衡,存在一定的异质性。通过 ERM 对模型进行优化时,尽管可以在整体上获得较高的准确率,但这可能是由于模型对数据集中多数群体的预测性能很完美,而在少数群体上的预测效果并不一定很好。 如上图所示,当训练数据分布与测试数据分布一致时,若使用 ERM 算法进行优化,模型的泛化性能是有理论保证的。然而,如果数据的分布出现了偏移,则 ERM 算法的得到的模型的泛化性能可能较差。 因此,我们应该充分考虑数据的异质性,设计更加合理的风险最小化方法,为不同的样本点施加合适的权重,使得模型对多数群体和少数群体都有较好的预测能力,从而提升模型的泛化性能。 如上图所示,OOD 泛化问题旨在保证模型在发生分布偏移时的泛化能力,即通过「min-max」优化找到一组参数 ,使得模型在最差的环境下的表现性能能够接受。考虑到分布偏移的情况,在不同环境下采集到的数据的 X 和 Y 的联合分布也有所区别。 2、异质性风险最小化 我们从不变性学习的角度试图解决 OOD 泛化问题。在此,我们假设随机变量 满足以下假设:(1)不变性假设:在不同的环境下,特征 与标签 Y 的关系是稳定不变的(2)充分性假设:标签 Y 可以完全由产生。基于以上两点假设,使用特征 做预测可以以较高的准确率实现跨环境的稳定预测, 是一种具有因果效应的不变特征。 要想找到上述不变特征,我们需要对环境有很强的约束。现有的许多不变性学习方法都会针对从多个环境中寻找符合上述性质的特征。然而,在真实情况下,许多数据集是收集自多个不同数据源的混合数据,我们往往很难为环境保留明确且对模型学习真正有效的标签。 针对混杂环境下数据存在异质性的现象,刘家硕博士等人提出了异质性风险最小化框架(HRM)。首先,我们假设数据中存在跨环境变化十分剧烈的部分 ,不同环境下的 与 Y 的关系存在差异。 接着,我们将异质性风险最小化问题定义为:给定存在异质性的混合数据集D,在缺乏环境标签的条件下,旨在学习到不变性特征的集合,使模型具有更好的 OOD 泛化能力。 如上图所示,HRM 算法框架包含以下两个模块: (1)异质性识别模块 (2)不变性预测模块 。在不断的迭代中,上述两个模块会相互促进。 具体而言,我们首先通过模块 学习混合数据集中不稳定的特征,识别出数据中具有异质性的环境,得到具有强异质性的环境 。接着,我们通过不变性学习模块 学习 中不变的特征 。 数据中存在相互依赖的变化的部分和不变的部分,我们对学到的不变特征 进行转化,可以得到变化的特征 ,二者相互促进。为了得到较好的理论性质,作者在本文中重点关注较为简单的数据,通过上图中的简单特征选择过程得到 和 。 3、核异质风险最小化 HRM 算法无法处理复杂的数据(例如,图片、文本)。在 KerHRM 中,刘家硕博士等人将 HRM 算法拓展至更加复杂的数据类型上。 在 HRM 算法流程的基础之上,刘家硕博士等人在 KerHRM 中引入了神经正切核(NTK)。根据 NTK 理论,神经网络(例如,MLP)的操作等价于在复杂的特征空间中进行线性回归。 如上图中的公式(5)所示,假设神经网络的参数为 w,输入数据为 X。对 在 的位置的做泰勒展开,根据模型参数的一阶泰勒展开式可以发现 的作用相当于在梯度项上做线性操作。因此,通过 NTK 技术,我们可以将复杂的神经网络操作转变为在神经正切特征上进行线性回归。 通过上述方式,我们可以将 HRM 应用到较为复杂的数据上,同时保留 HRM 框架的特性。KerHRM通过构造一组正交的核区分数据中稳定和不稳定的部分。 4、仿真实验:Colored MNIST 本文作者采用与论文「Invariant RiskMinimization」中相同的实验设定,测试了 KerHRM 方法在 Colored MNIST 数据集上的性能。在该实验环境下,作者将 MNIST 中 0-4 的数字标记为「0」类,将「5-9」的数字标记为「1」类,从而将十分类问题改造为了二分类问题。接着,作者将「0」类中大部分的图片染成某种颜色,将「1」类中大部分的图片染成另一种颜色,从而构建了数字标签和颜色之间的虚假关联。在测试时,我们将图片的染色情况翻转过来,此时传统的机器学习模型的性能往往会大幅下降。 实验结果如上图所示,随着迭代轮数的增加,KerHRM 框架学习到的环境的异质性逐渐变大,测试时的预测准确率也递增。同时,训练时和测试时准确率的差距在逐渐缩小。可见,OOD 泛化的性能和我们构造的环境的异质性程度呈十分强的正相关,异质性对于 OOD 泛化性能十分重要。因此,环境标签的质量(异质性)对于泛化性能也会有很大的影响。 五、清华大学何玥:分布外泛化图像数据集——NICO 1、非独立同分布图像分类 图像分类是计算机视觉领域中最基础、最重要的任务之一。在传统的独立同分布假设下,通过最小化训练集上的经验损失,现有的深度学习模型已经可以在测试时达到很好的预测性能。然而,在真实情况下采集到的数据集很难满足独立同分布假设,训练集几乎不可能覆盖所有的测试样本中的数据分布情况。此时,如果我们依然通过最小化模型在训练集上的经验损失来优化模型,往往会导致模型在测试时的性能严重下降。 如上图所示,训练数据和测试数据中猫和狗所处的背景差异很大,并不满足独立同分布假设,深度学习模型可能会错误地将背景当做对图片进行分类的标准。而人类对此类分类问题则天然地具有很强的泛化能力,好的分类模型也应该对这种背景分布的变化不敏感。 我们将该问题称为非独立同分布的图像分类问题,其中训练集和测试集中的数据分布不同。此类问题包含两种子任务: (1)Targeted Non-I.I.D 图像分类:测试集中的部分信息已知,我们可以借助迁移学习等方法将当前训练好的模型迁移到目标域的数据分布上,实现较好的预测性能 (2)General Non-I.I.D 图像分类:利用不变性等机制,将学习到的模型以较高准确率泛化到任意未知数据分布上。 实际上,非独立同分布场景下的学习问题对计算机视觉任务十分重要。在自动驾驶、自动救援等场景下,我们希望模型能够迅速识别不常见但非常危险的情况。 2、衡量数据分布差异 为了刻画分布之间的差异,我们定义了一种名为「NI」的指标。在计算 NI 的过程中,我们利用预训练好的通用视觉模型提取图像特征,然后在特征层面上计算两个分布之间的一阶矩距离,并采用分布的方差进行归一化。大量实验证明,NI 对图像分布差异的描述是较为鲁棒的。此外,在有限采样的情况下,数据分布偏差无处不在,随着数据分布偏差变强,分类模型的错误率也不断提升。 实际上,分布偏移现象广泛的存在PASCAL VOC、ImageNet、MSCOCO 等标杆数据集中。以 ImageNet 为例,我们首先选取了 10 个常见的动物类别,然后针对每类动物选取不同的子类,形成了不同的三个数据集 A、B、C。 接着,我们采集了一些固定的测试样本。通过测量 NI,我们发现不同的数据集存在数据分布偏差,但是这种偏差较弱,且这种数据偏差不可控,分布偏差的大小随机。为了推动 OOD 泛化在视觉领域的研究,我们构建了存在明显的数据分布偏差,且偏差可调节的视觉数据集——NICO。 3、NICO数据集 首先,我们考虑从图片中分解出主体和上下文的视觉概念。如上图所示,主体可能为猫或狗,上下文可能为主体的姿态、背景、颜色等概念。通过在训练和测试中组合不同的主体和上下文,我们可以形成数据分布的差异。 上下文概念来自于真实世界,我们可以从很多角度描述上下文,进而描述一种有偏的数据分布。当上下文和主体的组合有意义时,我们可以很容易地收集到足够多的图像。 目前公开的 NICO 数据集具有如上图所示的层次结构。动物和交通工具两个超类包含 9-10 个主体类别,每个主体类别拥有一系列上下文概念。我们希望上下文尽可能多样,且主体与上下文的组合有意义,各个上下文之间有一定的重叠。此外,我们要求每类主体和上下文组合的样本数量尽可能均衡,不同上下文之间的差异尽可能大。 和独立同分布的经典数据集相比,由于 NICO 引入了上下文概念,且图像是非中心化、非规则的,所以 NICO 数据集上的图像分类任务更加具有挑战性。 面对有限样本,无论如何采样都会产生一定程度的数据分布偏差,这是由图像本身的性质,以及采样规模的差异造成的。在 NICO 数据集中,我们通过随机采样的方式模拟近似独立同分布的场景。与ImageNet 数据集相比,确实 NICO 引入了非中心化性质/上下文概念,其识别任务更加困难。 4、OOD 泛化——比例偏差 当测试数据和训练数据分布存在「比例偏差」时,我们要求训练集和测试集数据都包含所有类别上下文,但是我们在训练和测试中选择不同的上下文作为主导上下文(在整采集的图像中占比较高)。通过在训练和测试中设置不同的主导上下文,我们可以自然地形成数据分布的差异。 在这里,我们还定义了「主导率」(Dominant Ratio)指标来刻画具有主导上下文的样本量具有其它上下文的样本量的比例。如上图所示,随着主导率的提升,训练和测试数据之间的分布差异越来越大,对模型准确率的影响也越来越大, 5、OOD 泛化——成分偏差 「成分偏差」模拟了我们在训练数据、测试数据采样时的时空限制。在该设定下,训练集并不包含所有类别的上下文,有一些测试集中的上下文是训练中未曾见过的。随着训练集包含上下文的种类减少,测试集和训练集的数据分布差异递增,模型学习的效果也越来越差。 为了实现更大的数据分布偏差,我们还可以组合成分偏差和比例偏差。我们可以要求某些类别上下文在训练集包含的上下文中占据主导地位,即通过同时调节训练集可见上下文的数量和主导率控制数据分布偏差的程度,进而观察模型在不同数据偏差场景下表现出的性能。 6、OOD 泛化——对抗攻击 在「对抗偏差」场景下,我们选择某些类样本作为正类,其它类别的样本作为负类。接着,我们定义某种上下文只出现在训练集的正类中,以及测试集的负类中。此时,模型就会错误地将该上下文与正类联系到一起,从而在测试时取得较差的性能。我们将这种上下文称为混淆上下文,随着混淆上下文比例的增加,模型对正类的学习越来越容易受到虚假关联的影响。 蓝海大脑深度学习 解决方案 机器学习模型已经在许多面向互联网的场景取得成功。在诸如预测点击量或对图像进行分类等应用场景中,模型做出错误决策的代价似乎并不高,因此从业者采用“性能驱动”的模式优化人工智能技术,即只关注该模型在完成目标任务时体现出的性能而不太关注技术发生错误时的风险。当任务环境发生变化,预测出现错误的时候,人们通过频繁地更新黑盒模型以保证预测的性能。 然而,在诸如医疗保健、工业制造、金融和司法等与社会生活息息相关的领域,机器学习模型做出的错误预测的后果往往是难以接受的,这些场景也因此被称为风险敏感的场景。由于数据获取困难以及伦理问题,在风险敏感的场景中因为环境变化而重新训练机器学习模型的代价会比较昂贵,因此模型的短期预测性能之外的特性也十分重要。为了促进机器学习模型在更多风险敏感场景的应用,我们需要仔细分析机器学习模型面临的技术性风险,并采取办法克服这些风险。 蓝海大脑面向广大深度学习、机器学习、因果学习研究者、AI开发者和数据科学家提出稳定学习液冷解决方案,通过软硬件一体式交付,提供数据标注、模型生成、模型训练、模型推理服务部署的端到端能力,降低使用AI的技术门槛,让客户更聚焦业务本身,使AI业务能快速开发与上线。 该方案提供一站式深度学习平台服务,内置大量优化的网络模型算法,以便捷、高效的方式帮助用户轻松使用深度学习技术,通过灵活调度按需服务化方式提供模型训练、评估与预测。 一、优势特点 1、节能性更优 整体机房空调系统能耗降低70%;服务器风扇功耗降低70%~80%;液冷系统可实现全年自然冷却,PUE<1.1,整体机房风液混合冷却系统PUE<1.2 2、器件可靠性更高 CPU满载运行核温约40-50℃,比风冷降低约 30℃;服务器系统温度比风冷降低约 20℃ 3、性能更优 CPU和内存工作温度大幅降低,可实现超频运行, 计算 集群性能可提高5% 4、噪声更低 液冷散热部分水循环噪音极低,风冷部分风扇转速降低,噪音减小,降低约30dB,满载运行噪音<60dB 5、率密度提升 单机柜功率密度可达25kW以上,相比风冷散热方式大幅提升 二、液冷服务器架构 超融合架构承担着计算资源池和分布式存储资源池的作用,极大地简化了数据中心的基础架构,通过软件定义的计算资源虚拟化和分布式存储架构实现无单点故障、无单点瓶颈、弹性扩展、性能线性增长等能力。通过简单方便的统一管理界面,实现对数据中心计算、存储、网络、虚拟化等资源的统一监控、管理和运维。 超融合基础架构形成的计算资源池和存储资源池直接可以被云计算平台进行调配,服务于OpenStack、EDP、Docker、Hadoop、HPC等IaaS、PaaS、SaaS平台,对上层的应用系统或应用集群等进行支撑。同时,分布式存储架构简化容灾方式,实现同城数据双活和异地容灾。现有的超融合基础架构可以延伸到公有云,可以轻松将私有云业务迁到公有云服务。 三、客户收益 1、节约能源 原有数电力使用成本在总体拥有成本TCO中占比最大。实现IT设备按需供电与制冷,让供电和制冷系统的容量与负载需求更为匹配,从而提高了工作效率并减少过度配置。 2、运维监管 帮助客户实现数据中心多层级、精细化能耗管理,通过多种报表 确定能源额外损耗点 ,实现节能降耗。资产管理帮助用户制定资产维护计划,实现主动预警,动态调整维护计划,按照实际情况输出优化方案,构建最佳资产管理功能。
相关资源
  • 所需E币: 2
    时间: 2024-8-19 16:05
    大小: 90.62MB
    上传者: milktea88
    很好的图解入门书籍第1章活跃中的深度学习第2章用图说明深度学习的机制第3章说明深度学习之前的准备第4章了解什麽是神经网路第5章了解卷积神经网路的机制第6章了解递回神经网路的机制第7章了解误差反向传播法的机制
  • 所需E币: 0
    时间: 2024-3-19 14:25
    大小: 3.18KB
    上传者: 开心就很好了
    一、什么是pytorchPyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。二、为什么使用PyTorch?机器学习研究人员喜欢使用PyTorch。截至2022年2月,PyTorch是PapersWithCode上最常用的深度学习框架,该网站用于跟踪机器学习研究论文及其附带的代码存储库。PyTorch还有GPU加速,使代码运行得更快,你可以专注于操作数据和编写算法。三、PyTorch库的优势通过将模型应用到例证,深度学习允许我们执行很多复杂任务,如机器翻译、玩战略游戏以及在杂乱无章的场景中识别物体等。为了在实践中做到这一点,我们需要灵活且高效的工具,以便能够适用于这些复杂任务,能够在合理的时间内对大量数据进行训练。我们需要已被训练过的模型在输入变量变化的情况下正确执行。接下来看看我们决定使用PyTorch的一些原因。PyTorch很容易被推广,因为它很简单。许多研究人员和实践者发现它易于学习、使用、扩展和调试。它是Python化的,虽然和任何复杂领域一样,它有注意事项和最佳实践示例,但对于以前使用过Python的开发人员来说,使用该库和使用其他Python库一样。更具体地说,在PyTorch中编写深度学习机是很自然的事情。PyTorch为我们提供了一种数据类型,即张量,通常用来存储数字、向量、矩阵和数组。此外,PyTorch还提供了操作它们的函数,我们可以使用这些函数来增量编程。如果我们愿意,还可以进行交互式编程,就像平常使用Python一样。如果你知道NumPy,那么你对交互式编程应是非常熟悉的。PyTorch具备2个特性,使得它与深度学习关联紧密。首先,它使用GPU加速计算,通常比在CPU上执行相同的计算速度快50倍。其次,PyTorch提供了支持通用数学表达式数值优化的工具,该工具用于训练深度学习模型。四、创建数据Tensors张量是一种特殊的数据结构,它和数组还有矩阵十分相似。在Pytorch中,Tensors可以在gpu或其他专用硬件上运行来加速计算之外,其他用法类似Numpy。importtorchimportnumpyasnp#直接从数据创建data=[[1,2],[3,4]]x_data=torch.tensor(data)x_data.shape#全为1x_ones=torch.ones_like(x_data)#retainsthepropertiesofx_dataprint(f"OnesTensor:\n{x_ones}\n")#全为0x_rand=torch.rand_like(x_data,dtype=torch.float)#overridesthedatatypeofx_dataprint(f"RandomTensor:\n{x_rand}\n")#查看tensor类型tensor=torch.rand(3,4)print(f"Shapeoftensor:{tensor.shape}“)print(f"Datatypeoftensor:{tensor.dtype}”)print(f"Devicetensorisstoredon:{tensor.device}")步骤2:自动梯度计算在Pytorch中可以使用tensor进行计算,并最终可以从计算得到的tensor计算损失,并进行梯度信息。在Pytorch中主要关注正向传播的计算即可。#x=torch.ones(2,2,requires_grad=True)x=torch.tensor([[1,2],[3,4]],dtype=float,requires_grad=True)print(x)y=x+2print(y)print(y.grad_fn)#y就多了一个AddBackwardz=y*y*3out=z.mean()print(z)#z多了MulBackwardprint(out)#out多了MeanBackward#计算公式:out=0.25((x+2)*(x+2)*3)out.backward()print(x.grad)步骤3:拟合曲线接下来我们将尝试使用Pytorch拟合一条曲线,我们首先的创建待你和的参数,并加载待训练的数据。#需要计算得到的参数w=torch.ones(1,requires_grad=True)b=torch.ones(1,requires_grad=True)#数据x_tensor=torch.from_numpy(x)y_tensor=torch.from_numpy(y)#目标模型#y=wx+b定义损失defmse(label,pred):diff=label-predreturntorch.sqrt((diff**2).mean())pred=x_tensor*w+bloss=mse(y_tensor,pred)#执行20次参数更新for_inrange(20):#重新定义一下,梯度清空w=w.clone().detach().requires_grad_(True)b=b.clone().detach().requires_grad_(True)#正向传播pred=x_tensor*w+b#计算损失loss=mse(y_tensor,pred)print(loss)#计算梯度loss.backward()五、完整代码(GPU)使用GPU训练只需要把训练数据、模型放入GPU中即可指定是否使用GPU训练模型device=torch.device("cuda:0"iftorch.cuda.is_available()else"cpu")模型放入GPU中model.to(device)数据放入GPU中inputs=torch.from_numpy(x_train).to(device)labels=torch.from_numpy(y_train).to(device)importtorchimporttorch.nnasnnimportnumpyasnpclassLinear_yy(torch.nn.Module):  def__init__(self,in_dim,media_dim,out_dim):    super(Linear_yy,self).__init__()    self.linear_1=torch.nn.Linear(in_dim,media_dim)    self.linear_2=torch.nn.Linear(media_dim,out_dim)       defforward(self,x):    x=self.linear_1(x)    x=self.linear_2(x)    returnx   in_dim=1media_dim=2out_dim=1model=Linear_yy(in_dim=in_dim,media_dim=media_dim,out_dim=out_dim)device=torch.device("cuda:0"iftorch.cuda.is_available()else"cpu")model.to(device)epochs=1000learning_rate=0.0001optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)loss_faction=torch.nn.MSELoss()forepochinrange(epochs):  epoch+=1  #注意转行成tensor  inputs=torch.from_numpy(x_train).to(device)  labels=torch.from_numpy(y_train).to(device)     #梯度要清零每一次迭代  optimizer.zero_grad()   #前向传播  outputs=model(inputs)  #计算损失  loss=loss_faction(outputs,labels)  #返向传播  loss.backward()  #更新权重参数  optimizer.step()  ifepoch%50==0:    print('epoch{},loss{}'.format(epoch,loss.item()))
  • 所需E币: 0
    时间: 2024-3-19 14:56
    大小: 2.48KB
    一、Pytorch功能PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。PyTorch提供了两个高级功能:具有强大的GPU加速的张量计算(如Numpy)包含自动求导系统的深度神经网络除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。Torch是一个有大量机器学习算法支持的科学计算框架,是一个与Numpy类似的张量(Tensor)操作库,其特点是特别灵活,但因其采用了小众的编程语言是Lua,所以流行度不高,这也就有了PyTorch的出现。所以其实Torch是PyTorch的前身,它们的底层语言相同,只是使用了不同的上层包装语言。PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。PyTorch提供了两个高级功能:*具有强大的GPU加速的张量计算(如Numpy)*包含自动求导系统的深度神经网络二、Pytorch使用场景1.图像和语音识别PyTorch在图像和语音识别领域得到了广泛应用,包括对图像进行分类、目标检测、语音情感识别等。2.自然语言处理PyTorch在自然语言处理领域也有很多应用,包括对文本进行分类、情感分析、机器翻译等。3.机器学习PyTorch也可以用于传统机器学习问题,例如分类、回归等问题。4.深度学习教学和研究PyTorch使用简单,易于理解,适合用来进行深度学习教学和研究。三、训练流程准备好数据和网络之后,就可以开始训练模型了,训练的过程分为train和test,其中train做训练,test做验证。训练的过程包括3个超参数Epochs-迭代数据集的次数,也就是说对数据集进行了多少次迭代BatchSize-一次训练的样本数LearningRate-学习率。较小的值会导致学习速度变慢,而较大的值可能会导致训练过程中出现不可预测的行为。learning_rate=1e-3batch_size=64epochs=5deftrain_loop(dataloader,model,loss_fn,optimizer):  size=len(dataloader.dataset)  forbatch,(X,y)inenumerate(dataloader):    #Computepredictionandloss    pred=model(X)    loss=loss_fn(pred,y)    #Backpropagation    optimizer.zero_grad()    loss.backward()    optimizer.step()    ifbatch%100==0:      loss,current=loss.item(),batch*len(X)      print(f"loss:{loss:>7f} [{current:>5d}/{size:>5d}]")deftest_loop(dataloader,model,loss_fn):  size=len(dataloader.dataset)  num_batches=len(dataloader)  test_loss,correct=0,0  withtorch.no_grad():    forX,yindataloader:      pred=model(X)      test_loss+=loss_fn(pred,y).item()      correct+=(pred.argmax(1)==y).type(torch.float).sum().item()  test_loss/=num_batches  correct/=size  print(f"TestError:\nAccuracy:{(100*correct):>0.1f}%,Avgloss:{test_loss:>8f}\n")loss_fn=nn.CrossEntropyLoss()optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)epochs=10fortinrange(epochs):  print(f"Epoch{t+1}\n-------------------------------")  train_loop(train_dataloader,model,loss_fn,optimizer)  test_loop(test_dataloader,model,loss_fn)print("Done!")模型保存和加载通过pytorch可以保存和加载训练好的模型。在PyTorch中,torch.nn.Module模型的可学习参数(即权重和偏差)包含在模型的参数中(通过model.parameters()访问)。state_dict是一个Python字典对象,它保存了模型每一层的参数。#Printmodel'sstate_dictprint("Model'sstate_dict:")forparam_tensorinmodel.state_dict():  print(param_tensor,"\t",model.state_dict()[param_tensor].size())打印结果如下Model'sstate_dict:conv1.weight   torch.Size([6,3,5,5])conv1.bias  torch.Size([6])conv2.weight   torch.Size([16,6,5,5])conv2.bias  torch.Size([16])fc1.weight  torch.Size([120,400])fc1.bias   torch.Size([120])fc2.weight  torch.Size([84,120])fc2.bias   torch.Size([84])fc3.weight  torch.Size([10,84])fc3.bias   torch.Size([10])四、总结至此,pytorch的基本使用就介绍完成了,可以看出结合深度学习网络pytorch提供了非常好用的接口,帮助我们创建网络、加载数据、训练和部署等,极大的提高了深度学习的效率,后面我们将结合具体的例子对pytorch的使用做一个介绍。
  • 所需E币: 5
    时间: 2024-3-1 13:32
    大小: 5.61MB
    上传者: htwdb
    本文提出了一种基于深度学习的C语言代码缺陷定位方法。该方法不同于以往的利用缺陷报告或者以缺陷代码形成训练库的代码缺陷定位方法,而是基于OJ系统存在的大量正确代码形成检测模板,即将大量正确的代码作为训练数据通过深度学习技术进行训练构建代码模板库,通过找出与提交代码最相似的模扳代码,对缺陷代码进行缺陷定位。具体地,该方法将C语言代码表示为抽象语法树(AST)的形式,并对AST进行子树拆分,使用Word2vec词嵌入技术对代码进行编码,输入神经网络模型进行特征提取,构建代码模板库;在检测阶段将缺陷代码与代码模板库中的代码进行相似度计算,找出最相似的模板代码,通过逐句地词法分析找出缺陷语句,从而实现C语言代码的缺陷定位。通过对两个数据集以及相应测试集的构建来进行方法的有效性验证,结果表明本文的方法具有较好的缺陷定位效果。     其次,本文探索了该方法在C语言课程教学实验系统的应用,通过在实验代码提交页面添加“错误提示”功能,对代码的逻辑缺陷进行检测井反馈给学生,帮助学生更快地发现代码中可能存在的缺陷语句。最后,本文给出了针对该功能的可用性测试、性能测试、以及安全性测试结果,证明该方法在实际系统中的有效性
  • 所需E币: 1
    时间: 2023-6-28 13:51
    大小: 1.59MB
    上传者: 张红川
    深度学习开源框架.pptx
  • 所需E币: 1
    时间: 2023-6-28 13:50
    大小: 2.04MB
    上传者: 张红川
    【14】深度学习与神经网络.pptx
  • 所需E币: 1
    时间: 2023-6-28 13:44
    大小: 12.52MB
    上传者: 张红川
    动手学深度学习.pdf
  • 所需E币: 1
    时间: 2023-6-1 10:27
    大小: 146.5MB
    推荐系统与深度学习-黄昕等
  • 所需E币: 5
    时间: 2023-5-28 11:58
    大小: 5.07MB
    上传者: 木头1233
    《MATLAB深度学习简介》电子书
  • 所需E币: 1
    时间: 2023-5-12 11:52
    大小: 18.45MB
    TensorFlow深度学习从入门到进阶-张德丰
  • 所需E币: 1
    时间: 2023-5-9 10:09
    大小: 56.59MB
    深度学习入门之PyTorch-(博文视点AI系列)-廖星宇
  • 所需E币: 1
    时间: 2023-5-6 15:57
    大小: 180.38MB
    Python深度学习-(图灵程序设计丛书)-[美]FrançoisChollet
  • 所需E币: 1
    时间: 2023-5-6 12:08
    大小: 228.93MB
    深度学习:Caffe之经典模型详解与实战-乐毅-王斌
  • 所需E币: 0
    时间: 2023-4-19 10:05
    大小: 967B
    上传者: 开心就很好了
    分享一套图神经网络视频教程——《深度学习-图神经网络实战》,视频+源码+数据+文档资料下载!《深度学习-图神经网络实战》课程旨在帮助同学们快速掌握深度学习在图模型领域算法及其应⽤项⽬。内容主要包括三个模块:1、图神经⽹络经典算法解读,详细解读GNN,GCN,注意⼒机制图模型等算法;2、图神经⽹络框架PyTorch-Geometric,全程实战解读图神经⽹络框架应⽤⽅法;3、图神经⽹络项⽬实战,基于真实数据集与实际项⽬展开图数据集构建与模型训练并应⽤到实际场景中。整体⻛格通俗易懂,提供全部数据与代码。课程大纲:第1章图神经网络基础第2章图卷积GCN模型第3章图模型必备神器PyTorchGeometric安装与使用第4章使用PyTorchGeometric构建自己的图数据集第5章图注意力机制与序列图模型第6章图相似度论文解读第7章图相似度计算实战第8章基于图模型的轨迹估计第9章图模型轨迹估计实战第10章图神经网络结合时间序列第11章图时间序列预测项目实战第12章异构图模型算法解读第13章异构图构建实例分析第14章KIE图模型关系抽取算法解读第15章KIE图模型应用源码解读
  • 所需E币: 1
    时间: 2023-4-26 19:03
    大小: 185MB
    深度学习全书:公式+推导+代码+TensorFlow-全程案例-陈昭明(epub格式,附阅读器安装程序)
  • 所需E币: 1
    时间: 2023-4-26 09:46
    大小: 132.01MB
    TensorFlow+Keras深度学习人工智能实践应用-林大贵-清华大学出版社
  • 所需E币: 1
    时间: 2023-4-18 11:33
    大小: 200.19MB
    TensorFlow+Keras深度学习人工智能实践应用-林大贵
  • 所需E币: 1
    时间: 2023-4-19 10:44
    大小: 19MB
    走向TensorFlow2.0:深度学习应用编程快速入门-赵英俊(epub格式,附阅读器安装程序)
  • 所需E币: 1
    时间: 2023-4-24 15:25
    大小: 255.79MB
    TensorFlow深度学习算法原理与编程实战-蒋子阳
  • 所需E币: 2
    时间: 2023-4-11 10:10
    大小: 109.42MB
    深度学习之PyTorch实战计算机视觉-唐进民