首页 > 其他分享 >特斯拉AI总监的MNIST训练之旅

特斯拉AI总监的MNIST训练之旅

时间:2023-04-02 19:31:46浏览次数:38  
标签:loss 特斯拉 AI misses train split eval error MNIST

1. 引言

今天我们来重点介绍一下特斯拉AI总监的一篇博客《Deep Neural Nets: 33 years ago and 33 years from now》,这篇文章深入浅出地介绍了DNN最近三十年来的发展和趋势。

恩,闲话少说,我们直接开始吧!

2. 实验内容

Andrej Karpathy 主要复现了深度学习开山之作LeNet,该模型主要用于手写字符识别。他尝试利用这33年来人类一些新的改进的trick,来提升模型的效果。基于 lecun1989-repro 进行相应的实验内容如下:

  1. baseline:
eval: split train. loss 4.073383e-03. error 0.62%. misses: 45
eval: split test . loss 2.838382e-02. error 4.09%. misses: 82
  1. 原文的MSE loss换成如今多分类最为常用的损失函数Cross Entropy Loss
eval: split train. loss 9.536698e-06. error 0.00%. misses: 0
eval: split test . loss 9.536698e-06. error 4.38%. misses: 87
  1. 结果并没有提升,怀疑原始代码中的SGD优化器不够给力,于是切换成了最新的AdamW优化器,并使用“大家都知道”的最优初始学习率3e-4,还加了点weight decay,得到结果如下:
eval: split train. loss 0.000000e+00. error 0.00%. misses: 0
eval: split test . loss 0.000000e+00. error 3.59%. misses: 72
  1. 初步尝到了甜头,但仔细看评价结果,可以发现train/test的差别仍很大,提示这可能是过拟合的现象。于是决定稍微添加一些数据增强。
eval: split train. loss 8.780676e-04. error 1.70%. misses: 123
eval: split test . loss 8.780676e-04. error 2.19%. misses: 43
  1. 感觉还是有一些过拟合,遂增加dropout,并把tanh激活函数换成了ReLU。
eval: split train. loss 2.601336e-03. error 1.47%. misses: 106
eval: split test . loss 2.601336e-03. error 1.59%. misses: 32

通过上面一步一步地改进,Andrej Karpathy 总监成功把33年前经典分类问题的错误率又降低了60%!这几步虽然很常见,但也体现了总监扎实的基本功。总监还是不满意,对推理结果进行了可视化,得到模型的错例如下:

特斯拉AI总监的MNIST训练之旅_数据集

虽然他又尝试了一些例如Vision Transformer之类更新潮酷炫的东西,但比较遗憾的是模型都没有再涨点了。最后从本质出发,通过可视化模型的错例,对其增加了相应的数据,这使得错误率进一步降低,达到了1.25%。

eval: split train. loss 3.238392e-04. error 1.07%. misses: 31
eval: split test . loss 3.238392e-04. error 1.25%. misses: 24

观察上面的错例其实大家也能感受到有些错误模型应该是可搞对的,此时增加相应的数据确实是一个好办法。但更重要的是,希望大家也能养成把模型推理结果可视化出来审视的好习惯!

3. 实验总结

接着,Andrej Karpathy 对上述实验,进行了相应的总结:

  1. 做的事情本质并没有改变,还是可微分的神经网络、基于梯度优化那一套理论
  2. 当时的数据集规模好小啊,MNIST只有7000多张,如今比如CLIP训练图片有400百万张,而且每张图的分辨率都大得多
  3. 受限于训练资源,当时网络好小啊
  4. 当时的训练好慢啊,7000多张图+这么小的网络要跑3天,现在使用总监的Macbook可以90s训练完成
  5. 针对该问题还是有进步的,可以用现在的技巧使错误率下降60%
  6. 纯增大数据集效果不大,还得配上各种训练技巧才能驾驭
  7. 再往前走得靠大模型了,就得大算力

4. 总结

尽管手写字符识别问题在如今看来已经是很成熟的算法啦,但是本文Andrej Karpathy 总监通过利用最新的深度学习策略,使得模型的错误率又下降了60%,同时也展现了其扎实的深度学习基础知识,希望大家可以都像其一样优秀。

嗯嗯,您学废了嘛?

标签:loss,特斯拉,AI,misses,train,split,eval,error,MNIST
From: https://blog.51cto.com/u_15506603/6164957

相关文章

  • No supported authentication methods available (server sent: publickey)错误解决
     Nosupportedauthenticationmethodsavailable(serversent:publickey)错误解决 https://blog.csdn.net/cl2227619761/article/details/109840203PasswordAuthenticationyes 实践: #pwd/etc/ssh#vimsshd_config#systemctlrestartsshd  翻译搜索复制......
  • A卡配置sovits4.0(AI配音/翻唱)详细步骤参考(Ubuntu20.04)
    之前用A卡配置过AI绘画,最近发现AI配音/翻唱挺火的,这里也来尝试一下。(N卡用户直接使用整合包就行,别来凑热闹)一、基础环境配置最开始的步骤还是一样,安装双系统、显卡驱动、ROCm,步骤和之前一样,就不重复写了,可以去看我之前Novel的文章https://www.cnblogs.com/strawberryPuddin......
  • AirNet使用笔记4
    1、DBM“航迹与计划相关配置”中“自动相关参数”:“相关最小权重值(含)”:最小就是二次代码,航班号,地址码全部算下来的,例如航班号一致6,二次代码不一致-3,24地址码一致,最终3,满足最小权重;“直接相关权重值(含)”:权重值(含)为12,指仅正值加起来满足12,就相关,不管负值(不同时的负值)。2、DBM“发布......
  • C语言逆向——如何寻找main入口,一个反汇编成C的实战练习
    第二节2.3找程序的入口原文:https://www.showdoc.com.cn/fengxin1225/7054696489361869控制台应用程序的main函数入口在OD中找到以上其他中的函数,然后跟着3个参数的CALL就是main例:———————————————————- 第二节2.4.1逆向并还原为C代码(网上解答)......
  • Linux系统下进程回收--waitpid函数
    waitpid函数的作用和wait函数的作用相同,只是有些参数不同。在Linux终端下输入命令:man2waitpid查看waitpid函数的具体描述:SYNOPSIS#include<sys/types.h>#include<sys/wait.h>pid_twaitpid(pid_tpid,int*wstatus,intoptions);......
  • JavaIO流:主要知识点
    JavaIO流:主要知识点File类介绍:java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关。File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必......
  • 《花雕学AI》04:尝鲜功能丰富且容易上手的AI绘画工具——Leonardo AI
    偶然机缘,我接触到了另外一个AI绘画平台:Leonardo.AI  它是一个新的AI图像平台,其输出质量可与目前最火的Midjourney相媲美,当然差距还是有的。其链接是https://leonardo.ai/,界面如下图。我填写了电邮地址,申请试用的资格,后来,就没有下文了,呵呵......然后,使用谷歌账号,居然......
  • golang蒙特卡洛树算法实现五子棋AI
    已经实现蒙特卡洛树算法的通用逻辑,只需要对应结构体实现相关接口就可以直接使用该算法。优化算法主要优化GetActions生成下一步动作,要尽可能少,去掉无意义的动作。以及优化ActionPolicy从众多动作挑选比较优秀的动作。对应五子棋就是执行该动作后当前局面评分最高。packagemain......
  • 最强绘图AI:一文搞定Midjourney(附送咒语)
    最强绘图AI:一文搞定Midjourney(附送咒语)Midjourney官网:https://www.midjourney.com简介Midjourney是目前效果最棒的AI绘图工具。访问Midjourney需要科学姿势。官网只是宣传和登录入口,提供个人主页、订阅管理等功能,Midjourney实际的绘画功能,是在另外一个叫discord的产品中实现......
  • Java线程:wait()和notify()
    一、wait()和notify()含义二、标准代码示例创建两个线程Thread0和Thread1。代码实现:运行流程详解三、什么时候释放锁—wait()、notify()四、用生活故事讲懂线程的等待唤醒1.老王和老李(专家程序员):2.王哥和李哥(普通程序员):3.小王和小李(新手程序员):五、问题理解1、执行wait()的......