2016 - 2024

感恩一路有你

latex怎么另起一行书写 mathtype过期后不显示精简模式?

浏览量:4935 时间:2023-03-21 16:24:53 作者:采采

mathtype过期后不显示精简模式?

1.增加行距是不现实的。2.在mathtyp

没有大数据,我们该如何将机器学习的想法制成原型?

从研究思路的提出到实验的具体实现,是工程中的基础环节。但是这个过程往往会受到一些明显的小瑕疵的影响。在学术界,研究生需要辛苦的研究——大量的写代码、写解释、写论文。新的工程项目往往需要一个全新的代码库,而将过去使用的代码直接扩展到这些新项目中往往很困难。

基于这种情况,哥伦比亚大学计算机科学博士生、OpenAI研究员Dustin Tran从个人角度概述了从研究思路到实验过程的步骤。其中最关键的一步是提出新的想法,这往往要花很多时间;而且至少对于作者来说,实验环节不仅仅是学习,更是解决不可预知问题的关键。此外,作者还明确表示,这个工作流程只适用于实验研究,理论研究需要遵循另一个流程,虽然两者有相通之处。

找到正确的问题

在真正开始一个项目之前,如何让你的想法 "土地与环境一个比较正式的话题很关键。有时它 很简单——就像导师会给你布置任务一样;或处理特定数据集或实际问题;或者和你的伴侣谈谈,确定工作内容。

更常见的是,研究实际上是一系列想法的结果,这些想法通常是通过日常谈话、最近的工作、阅读专业和非专业领域的文献以及反复阅读经典论文而产生的。

我发现一个非常有用的方法——保存一个主文档,这通常需要大量的工作。

首先,它有一个项目列表来安排所有的研究想法、问题和主题。有时它们可能是更高层次的问题,例如 "强化学习的贝叶斯/生成方法和 "解决机器学习中的公平问题也可以是一些非常具体的话题,比如 "处理EP 中记忆复杂性的推理网络和 "标度偏差和对称性的狄利克雷超越分析我经常尝试让项目列表更简洁:通过一些链接展开子内容。

然后,根据下一步要做的工作,将想法列表分类。这通常为我的后续研究指明了方向。我也可以根据这些项目的方向是否与我的研究观点一致,它们的必要性和有效性,随时修改这些项目的优先顺序。更重要的是,这份名单不仅关乎后续观点,还关乎下一个。我将来更喜欢学什么?从长远来看,这是对发现重要问题和提出简单新颖的解决方案的重要贡献。我经常访问这个列表,重新安排事情,增加新的想法,删除不必要的话题。最后,当我能够详细解释一个想法时,它就可以成为一篇更正式的论文。总的来说,我发现在同一个位置(同一个格式)迭代idea的过程可以让正式论文写作中的衔接和实验过程更加流畅。

管理项目

我们的最新arXiv预印本库。

我喜欢在GitHub库中维护研究项目。不管做了多少研究单位 "我会把它定义为相对独立的东西。例如,它可能与当前的一篇特定论文、一项应用数据分析或特定主题相关联。

GitHub repository不仅可以用于跟踪代码,还可以用于跟踪一般的研究进度、论文写作进度或尝试其他合作项目。但是项目的组织一直是个痛点。我更喜欢下面的结构,它来自戴夫·布雷。见:~ Blei/seminar/2016 _离散_数据/笔记/周_ 01.pdf。

把自己和合作者要做的事情列一个清单,这样就把问题和前进的方向说清楚了。

Doc/包含所有记录的项目,每个子目录包含一个会议纪要或文档提交,main.tex为主文档,每个章节是一个不同的文件,比如introduction.tex,将每个章节分开可以让很多人同时处理不同的章节,从而避免合并。有些人喜欢在主要实验完成后一次性写一篇完整的论文,但我更喜欢把论文作为当前想法的记录,让它随着实验的进展继续前进,就像想法本身一样。

Etc/是和之前的目录无关的其他东西。我通常用它来存储项目中讨论留下的白板内容的图片。有时候,我会在日常工作中获得一些灵感,我会将它们记录在Markdown document中,这也是一个处理对我工作的各种评论的目录,比如我的合作者对我论文内容的反馈。

Src/是所有代码编写的地方。可运行脚本直接写在src/上,类和实用程序写在codebase/上。下面我会详细解释(还有一个脚本输出目录)。

写代码

Edward是我现在用来写所有代码的工具,我发现它是快速试验现代概率模型和算法的最佳框架。

爱德华林克:

在概念层面上,爱德华 的吸引力在于语言遵循数学:模型的生成过程转化为每个爱德华代。代码;然后我要写的算法转化成下一行...这种纯粹的转换过程,避免了日后试图将代码扩展成自然研究问题的麻烦:比如之前使用了不同的方法,或者调整了梯度估计,或者尝试了不同的神经网络架构,或者在大数据集上应用了其他方法等等。

在实践层面上,我总是受益于爱德华 的现有模型示例(在edward/examples或edward/notebooks中)。我把预置的算法源代码(在Edward/推论中)作为一个新文件粘贴到我项目中的codebase/目录下,然后进行调整。这使得从零开始变得非常简单,我们也可以避免很多低级的细节。

写代码的时候,我总是按照pep8(我特别喜欢PEP8软件包:),然后尽量把每个脚本和脚本共享的类、函数定义分开;前者放在codebase/中以供导入。从第一步开始就保持代码质量永远是最好的选择,这个过程非常重要,因为项目会随着时间的推移而扩大,其他人也会逐渐加入进来。

Jupyter notebook很多人都在用Jupyter Notepad(链接:)作为一种交互的代码开发,也是一种简单的嵌入可视化和LaTeX的。对我来说,我没有。;我没有把它集成到我自己的工作流程中。我喜欢将所有代码写入Python脚本,然后运行这些脚本。但Jupyter等工具的交互性值得称赞。

实验管理

有必要投资一个好的工作站或者云服务提供商。GPU的这个特性基本上是通用的,我们应该有权利并行运行很多作业。

当我在本地计算机上完成脚本后,我的主要工作流程是:

1.运行rsync将本地计算机的Github库(包括未授权的文档)同步到服务器 的目录。

2.到服务器的ssh。

3.启动tmux并运行脚本。很多事情很复杂,tmux可以让你摆脱这个过程,所以你不 不必等到它结束后再与服务器交互。

脚本可行后,我开始用多个超参数配置钻探实验。这里有一个有用的工具tf.flags,它使用命令行参数来增强Python脚本,并向您的脚本添加如下内容:

然后,您可以运行以下终端命令:

这使得提交超级参数修改的服务器任务变得容易。

最后,谈到管理实验期间的任务输出,回想一下上一篇文章中的src/ directory的结构:

我们描述了每个脚本和代码库/。其他三个目录用于组织实验输出:

检查站/记录培训中保存的模型参数。当算法每迭代固定次数时,使用。这有助于维持长时间的实验——您可以取消一些任务,稍后恢复参数。每个实验的输出都会存储在checkpoints/下的子目录中,比如2017 05 24 _ 192314 _ batch _ size _ 25 _ LR _ 1e-4/。第一个数字是日期(YYYYMMDD),第二个是时间(HMS),其余都是超级参数。

记录/存储视觉学习的记录。每个实验都有自己的子目录,对应于checkpoints/。使用Edward的一个优点是,您可以简单地将一个参数(logdirlog/ subdir)传递给日志。跟踪的默认张量流摘要可通过TensorBoard可视化。

培训后输出/记录探索性输出;比如生成的图片或者matplotlib图,每个实验都有自己对应checkpoints/的子目录。

软件容器。Virtualenv是管理Python安装环境的必备软件,可以降低安装Python的难度。如果你需要更强大的工具,Docker容器可以满足你的需求。

虚拟链接:

码头集装箱链接:

TensorBoard是可视化和探索模型训练的优秀工具。因为TensorBoard有很好的交互性,你会发现它非常容易使用,因为它意味着你不 不需要配置很多matplotlib函数来理解训练。我们只需要把它加到代码的张量上。

Edward默认记录了大量的摘要,以便可视化训练迭代中函数值的损失、梯度和参数的变化。TensorBoard还包含了时间的对比,这也为全装修TensorFlow代码库提供了很好的计算图。对于仅通过TensorBoard无法诊断的疑难问题,我们可以输出out/目录中的内容,查看结果。

调试错误消息。我的调试工作流程很糟糕。在这方面,我在代码中嵌入了打印的语句,并通过消除过程来查找错误。这个方法很原始。虽然我还没有 还没试过,听说TensorFlow的调试器很厉害。

增强研究理解

继续研究你的模型和算法。通常,学习过程会让你对自己的研究和模型有更好的理解。这可以让你回到绘图板,重新思考你的位置,并寻求进一步改善的方法。如果该方法涉及要想成功,可以从简单的配置逐步扩大规模,尝试解决高维问题。

在更高的层次上,工作流本质上是将科学方法应用于现实世界。在实验的每一次迭代中,都不需要抛弃主要思想。另一方面,这一切的理论基础必须是坚实的。

在这个过程中,实验并不是孤立的。合作,与其他领域的专家交流,阅读论文,从短期和长期的角度考虑问题,参加学术会议,这些都有助于拓宽你对问题的思考,有助于解决问题。

代码 项目 过程 问题 研究

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。