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

2024-06-11 02:28

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

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

消融实验真的很重要

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

相关文章

基于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

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll