【AI学习】OpenAI员工谈消融实验

2024-06-11 02:28

本文主要是介绍【AI学习】OpenAI员工谈消融实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jbetker(OpenAI员工)的博客不长,很好读,但是内容却别开生面、非常有见底。

消融实验真的很重要

我不再像以前那样阅读那么多论文了。这让我感到惊讶,因为我一直认为,当我把机器学习作为全职工作时,我会花更多的时间阅读其他领域人士正在进行的所有事情。

在某种程度上,这是一个弱点。我们应该在阅读和写作之间找到一个健康的平衡,而我明显倾向于写作方面(代码,而不是论文)。话虽如此,我很荣幸能与我在这个领域中非常尊重的一些人一起工作,他们阅读的也不比我多。

有几个很好的理由,但今天我想讨论的是领域中缓慢进步和消融实验的重要性。这两件事和谐地工作,使得论文要么太无聊,不值得一瞥,要么完全无法用于任何未来的工作。让我们来谈谈为什么。

在过去的几年里,我学到的最重要的事情之一就是神经网络惊人的工作能力。这意味着在你可以尝试的一系列疯狂想法中,用来提高神经网络性能的,它们至少都会训练并产生结果。因此,我们需要想出衡量神经网络工作效果的方法——这些以我们领域中使用的各种各样的评估形式出现。

理想的梦想是使用这些评估来评判各种技术和想法之间的比较性能。如果你有一个疯狂的想法,编码实现它并得到更好的评估——这是一个好主意,对吧?是时候写一篇论文了。

嗯……事情并不是那么简单。首先,实现方式非常重要很多。两个由不同人从头开始编写的“变换器”通常会有不同的性能特征。当你实现这些时,你会做出一长串小决策,它们都以一种直观的方式与其他你可能正在测试的变更相互作用。常见的变量包括初始化比例、优化器选择、数据预处理选择、归一化层的类型和位置、激活选择、位置信息如何输入到注意力层——列表还在继续。

当你写一篇论文说你的新神经网络技术比我的好时——我会问的第一个问题是“我可以看看代码吗?”因为很可能你的新技术并不比我的好,是你的实现方式。我很愿意复制它。

聪明的研究者非常清楚这些问题,并以两种方式之一来应对:

1、只对具有良好特征化的现有开源代码进行小改进。这只有在一切都是开源的时候才有效——包括训练代码和数据集。它也只对那些作者仔细考虑了确定性的培训者真正有效。

2、进行消融实验,并且是大量的。从一些基础模型的裸实现开始,比如一个变换器。训练它很长时间。进行一个小调整。再次训练。再进行一个小调整并再次训练。

大多数优秀的研究者遵循第二个方法,但大多数人不愿意发表关于中间步骤的内容。这是一种遗憾,因为我认为这是在确定一个新想法是否值得追求时手头上最重要的数据!

这就是为什么我非常喜欢阅读任何研究论文的消融部分:它让我了解什么真正重要,以及结果有多少仅仅是由于研究者选择的实现选择。

当阅读实验结果时,我想以一个最后重要的事情作为结束,无论是否存在消融:在机器学习中,性能的两个最重要的决定因素是数据和计算。如果任何“新技术”改变了用于训练神经网络的计算量或数据类型,那么这项技术本身至少是值得怀疑的。我们不应该在运行之间使用不同的数据集进行训练,这是相当明显的,但衡量计算变化通常要困难得多。

要正确地消融计算变化,你真的需要跟踪你的神经网络中使用的所有矩阵乘法的数量和维度,并将其与你的基线进行比较。如果你的新数字不同,那将不可避免地影响性能。即使它在像归一化层这样“愚蠢”的东西中也是如此。神经网络是棘手的小野兽,会找到使用你给予它们的任何计算的方法。这一点在Chinchilla(包括我自己在内)之前并没有得到足够的重视,但研究人员开始“理解”。

这篇关于【AI学习】OpenAI员工谈消融实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049947

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring