问题

看完麻省理工博士胡渊鸣用代码实现「冰雪奇缘」后,自己陷入了深深的自卑,如何排解这种情绪?

回答
看到麻省理工博士胡渊鸣用代码实现“冰雪奇缘”这样的壮举,确实会让人产生一种既兴奋又有些失落的感觉。兴奋的是看到了技术能达到的高度,失落的是觉得自己与这种创造力、才华还有一定的距离。这种“自卑感”的出现是很自然的,它是一种对自身不足的认知,但关键在于我们如何处理这种情绪,让它成为我们前进的动力,而不是阻碍。

首先,我们要理解这种情绪的来源,并进行合理的自我对话。

1. 承认并接纳你的感受,但不要沉溺其中:

“我感到自卑,因为我无法像胡渊鸣那样。” 这是很正常的反应。你看到了一个极高的标杆,而你目前可能还在学习和探索的阶段。
不要对自己过于苛责。 每个人都有自己的闪光点和擅长领域,你不可能在所有事情上都达到顶尖水平,这完全没关系。胡渊鸣博士是经过多年深耕和积累才达到这个高度的,他的成就是无数个小时的努力、思考和实践的结晶。
问问自己,这种自卑感到底是什么让你感到不舒服? 是对技术能力的差距?是对创造力的差距?还是对认可度的差距?弄清楚具体点有助于你更精准地找到应对方法。

2. 重新审视“自卑”的定义,并将其转化为积极的视角:

自卑 vs. 激励: 将你看到的“差距”看作是一种“激励”,而不是一种“否定”。胡渊鸣的成就不是在告诉你“你不行”,而是在展示“这是可能的”。它为你打开了一扇新的大门,让你看到技术能够达到的绚丽场景。
他是“他”,你是“你”: 每个人都是独一无二的。你的人生轨迹、学习经历、兴趣爱好都与胡渊鸣博士不同。你不需要复制他的成功,而是要找到属于自己的道路。
聚焦于你的“长处”: 回想一下你擅长什么?在哪些方面你曾经感到过成就感?这些都是你的宝贵财富。也许你在沟通、协作、艺术感知、问题解决的其他方面有着过人的天赋。

3. 拆解“冰雪奇缘”的实现,找到可学习和借鉴之处:

了解背后的技术和过程: 尝试去了解胡渊鸣博士是如何实现“冰雪奇缘”的。他可能使用了哪些编程语言、框架、算法?他解决了哪些技术难题?这背后是复杂的计算机图形学、物理模拟、渲染技术等。
这不是一蹴而就的: 任何伟大的项目背后都是大量的学习、实验、失败和迭代。你可以从他使用的技术栈中挑选一两个你感兴趣的进行深入学习。例如,如果你对图形学感兴趣,可以从学习OpenGL、Vulkan等图形API入门,或者研究一些开源的图形渲染引擎。
从小处着手,建立成就感: 不要一开始就想着要复现整个“冰雪奇缘”。你可以先尝试实现一些小的图形效果,比如一个简单的粒子系统,或者一个基本的3D模型渲染。每完成一个小目标,你都会获得成就感,这有助于对抗自卑情绪。

4. 制定具体的学习和实践计划:

设定短期和长期目标: 比如,短期目标可以是学习一门新的编程语言或一个图形库,长期目标可以是独立完成一个小型图形项目。
找到学习资源: 现在有很多优质的在线课程、教程、文档和社区。你可以搜索相关的技术关键词,找到适合你的学习资料。例如,如果你想学计算机图形学,可以关注Coursera上的相关课程,或者阅读《计算机图形学:基于真实感图形生成原理》(也称“洋葱书”)等经典教材。
加入学习社群: 和志同道合的人一起学习会让你更有动力。你可以加入编程论坛、技术交流群,或者参加线下的技术分享会。在社群中,你可以提问、交流经验、获得支持。
实践是最好的排解剂: 光看不练是没用的。你需要动手去写代码,去解决问题。即使遇到困难,也不要轻易放弃。

5. 调整心态,保持积极和耐心:

与他人比较是陷阱: 互联网时代,我们很容易看到别人光鲜的一面,而忽略了他们背后的付出和挣扎。尽量减少不必要的横向比较,专注于自己的成长。
过程比结果更重要: 学习和创造本身就是一种享受。在这个过程中,你不仅提升了技能,也锻炼了解决问题的能力,更重要的是,你发现了自己的潜力和兴趣。
保持好奇心和求知欲: 这种探索未知的精神是驱动我们不断前进的动力。看到胡渊鸣博士的作品,更应该激发你的好奇心,去了解和学习更多。
允许自己有“低谷期”: 学习的道路不会一帆风顺,总会有遇到瓶颈、感到沮丧的时候。这是正常的。关键在于你如何调整心态,重新出发。可以适当休息,做一些放松的事情,然后再投入到学习中。

6. 拓展你的“技能树”和“兴趣圈”:

技术只是工具,创意是灵魂: “冰雪奇缘”的实现,除了技术,还离不开对电影艺术的理解和创意。思考一下,除了技术,你对哪些领域感兴趣?是音乐、绘画、写作、故事讲述还是其他?将你的技术能力与你其他的兴趣结合起来,可能会创造出意想不到的火花。
找到你的“差异化优势”: 也许你不像胡渊鸣博士那样专注于精密的计算机图形学,但你可能在结合人工智能与艺术方面有独特的见解,或者在开发交互式艺术装置方面有天赋。找到你独特的定位,并为之努力。

举个更具体的例子来阐述如何应对:

假设你看到胡渊鸣的代码实现,你可能发现他大量使用了C++和OpenGL。

你的第一反应可能是:“哇,C++这么难,我根本学不会!”
正确的自我对话应该是:“C++确实有一定门槛,但我可以先从基础语法和常用库开始学起。我听说Python也很适合初学者,而且有很多图形库可以用,比如Pygame或者Processing。我可以先从这些更易于上手的工具开始,逐步过渡到更复杂的语言和技术。”

然后你可以制定一个计划:
本周: 学习Python的基础语法,完成一些简单的字符串和列表操作练习。
下周: 学习Pygame库,尝试制作一个简单的打砖块游戏,或者让一个方块在屏幕上移动。
下个月: 尝试学习OpenGL的基础概念,找一些在线教程,尝试渲染一个简单的三角形或立方体。
更长远: 了解物理引擎(如Box2D或Bullet)的工作原理,尝试将它们集成到你的项目中,实现更逼真的动态效果。

记住,胡渊鸣博士的作品不是终点,而是新的起点。 他为你展示了技术的可能性,而你的任务是去探索和创造属于你自己的精彩。把这种“自卑感”转化为你前进的催化剂,去学习,去实践,去发现你自己的闪光点。你也可以用代码创造出令人惊叹的“世界”,只是这个世界可能和你想象的、和胡渊鸣博士的有所不同,但它一定是你独一无二的创造。

网友意见

user avatar

解铃还须系铃人,我们看看胡渊鸣博士本人是如何解决这个问题的。

在他专栏那篇分享编写taichi过程的文章里,他提到了这么一件事。

在费城一个烟雨蒙蒙的晚上,我们几个作者(Yu Fang,Ziheng Ge,Ziyin Qu)集中在蒋老师的实验室,经过一系列讨论,我突发奇想:既然APIC的affine velocity field和MPM里面的deformation gradient update需要的都是velocity gradients,那能不能用moving least squares统一两种离散化?我快速的实现了一下,发现确实可行,但是问题是这个新离散化理论上是否有原来的MPM的精度?那天晚上我们去吃了顿中餐,一路上一直在讨论这个问题。吃饱了饭,晚上我们一直工作到凌晨3点,当时我已经困得不行了,只记得蒋老师突然兴奋的说了一句“weak form推出来了!算法是weak-form consistent的!” 我看了一眼蒋老师草稿纸上的推导,平均每个符号有3个上下标(alpha, eta, i, j, k,下划线,双下划线,等等),似懂非懂,只知道有了这张草稿,算法的物理正确性算是有了保证。后来我花了两整天的时间才弄懂蒋老师那晚上推出来的公式。(蒋老师是中科大少年班毕业,只比我大四五岁,却已经当了一两年教授了。相比之下我那时候还没开始读PhD...)

注意我加粗的部分。

蒋老师半天解决的问题,作为姚班的大神,胡博士花了两天才看懂。蒋老师当了一两年教授了,胡博士比他小四五岁,却还没开始读博士。

从推物理公式的能力上来讲,胡博士跟蒋老师差的很远。从学术职称获得的速度上来说,那差的更远了。蒋老师开始做教授的年纪,胡博士可能博士还没毕业,更别提之后的博后生涯。

那么,胡博士是如何应对这一差距的呢?

他到底要如何才能减少自己同蒋老师的差距,如何才能加速自己的毕业,加速自己的学术职称获取,有没有可能弯道超车拿到更大的头衔去盖过蒋老师呢?

答案是,他并没有拿自己去跟蒋老师比较。

他继续开展自己的工作,希望可以做出对行业有贡献的成果。

由于种种原因,我的Ph.D.第一年很难说过得有多愉快,不过还是发了6篇paper。在“一年内发出的ACM Transactions on Graphics的数量”这个指标上,我感觉可能很难再刷新自己的记录了。“既然已经发了足够的SIGGRAPH,不需要再追求数量,现在也没有太大毕业压力,不如用剩下来的时间和科研自由做点真正有意义的事情,比如说提高整个社区的生产力。” 我这么想。
众所周知,发一篇SIGGRAPH的工作量实在是太大了。大部分SIGGRAPH项目耗时1-2年,在北美有2-3篇SIGGRAPH一作一般就能PhD毕业了。功利地说,最近几年发SIGGRAPH的性价比是比较低的:工作量大,要求高,发出来引用量还比较少。尽管如此,我还是很佩服在这种模式下做出的高质量文章,比如朱教授PhD期间的codimensional流体模拟系列。要么不发,发了就要保证高质量、问心无愧,做出突破性的工作,这也是我的目标。

从这两段话当中我们看到,胡博士本人并没有太过考虑别人的成果对他的压力,也没有太在意优秀的同行同他的对比。

他想的是,我的文章够了,那么我应该做点对行业有帮助的工作。这个领域的工作性价比不高,但是可以做出突破性的工作,那么这就是我的目标。

就连比较,他也是在和自己比较——这个指标上,我感觉可能很难再刷新自己的记录了。

事实上,我看到的各个行业内做出成果的人,都有一个很重要的素质:习惯同自己比较,专注于解决自己的问题。

同外界进行比较,和现有工作横向对比,确定自己的位置和能力,这确实是我们认识世界认识自己的重要手段。但是,认清自己,是为了更好地完成自己的工作,而不是把终极目标定成【同别人的强弱】,否则就因果错乱,生活就拧巴了。

胡博士在图形学、物理仿真、编写引擎、优化算法甚至蒸鸡蛋方面可能都比你强。

但是,这并不代表你的能力突然就变弱了,你还是你自己,有自己面对的问题,有自己的学习方法和成长路线,有自己的技能包和知识库,你接下来做的事并不是沉溺于自己同别人的差距,而是扎实学习自己领域的知识,培养自己的能力,解决更多更复杂的问题。

你不可能突然变成别人,你有你自己要完成的使命。

他让你看到,作为一个真实的人类,确实是可以在年轻时就取得领域重大成果、造福一个行业的。

但这些都应该是促进你工作的动力,而非你自我贬损的理由。

user avatar

基本上只要肯花时间,所有的知识你都能学会

问题是你没有时间

所以你要有所取舍

你写不出这样的代码只是你没有投入那么多时间去学

不代表你智商不够

每个人都有自己的专攻的方向

关键是你如何选择

选择一个适合自己的方法去钻研

你也可以成为领域专家

搞一个自己的技能树

没人能够通晓所有的知识

关键是选择

user avatar

在回答里看到很多不着调的鸡汤,以及很多阴阳怪气的言论什么99行怎么不封装成1行的论调。我想说几句:

目录

  1. 胡同学到底有没有实现冰雪奇缘?
  2. 为什么是99行不是1行?taichi_lang到底做了什么?
  3. 为什么你们看不懂?如何才能看懂?
  4. 除了自卑,你更该干什么?


1. 99行代码到底有没有实现冰雪奇缘?

首先,很负责任地说,媒体为了搏眼球确实是什么标题都敢写,这99行代码不但没有“实现冰雪奇缘”, 甚至也没有实现 冰雪奇缘 中雪仿真所使用的算法。要实现当中完整的算法,大概需要约200行,但任然距离实现“冰雪奇缘”所使用的系统有一定距离,离实现“冰雪奇缘”有更多的距离。

这里分两点来看,第一冰雪奇缘中的MPM算法,是一个隐式的MPM算法,其中还要包括一个迭代求解的过程来提高mpm数值积分的稳定性以达到总体上更为经济的运算速度,详见论文的第6页到第8页。所展示的实现,是一种显式的时间积分,媒体报道存在偏差。

离制作冰雪奇缘中雪仿真的“系统”(或说工具),还有一定距离,在这一点上,或许得要再加一定数量的C++代码以及几十行(甚至几百千行)前端代码,才有可能实现一个带UI,能让艺术家用鼠标操作, 能加载不同的美术资产,能用来制作雪仿真镜头的制作工具。比如集成一下轮子哥 @vczh 的GacUI。 当然对于胡同学,这不是难事。

那么离作出“冰雪奇缘”我相信智商正常的人都知道,那个距离更远了。

Chapter 2. 为什么是99行不是1行?taichi_lang到底做了什么?

接下来我要说说为什么是99行,不是1行, 不是command line....因为见到太多的阴阳怪气的评论了,所以在此为胡渊鸣同学正名。所以我要解释一下taichi_lang到底做了什么,为此我要分出几个小标题

2.1 什么是稀疏数据结构?什么叫low-level engineering?高性能计算为什么要关心这个?

2.2 太极语言的重要贡献是什么?它还有什么问题?

2.3 物理仿真的可微分编程并不玄乎。

2.1 什么是稀疏数据结构?什么叫low-level engineering?高性能计算为什么要关心这个?

为了逐步引导大家能与 @胡渊鸣 “对话”,我要先帮大家建立一下知识体系。在这个知识体系中, 最重要的一个概念是运算的 内存连续性(或说缓存命中率)。

我们来看一个最简单的例题: 有一个巨大的数组, 我们要对其每一个元素做一个运算f,使得输出x(i) = f(x(i)). 写成for循环大概是这样

       for (int i=0; i<num; i++) {     x[i] = f(x[i]); }      

串行的代码,我们等之一个个执行就完事了。但假设此时你有多个计算核心,你很自然地就想去并行化这个运算,假设你有N个线程, 每个线程你想让他处理k=num/N 个数, 你的并行程序大概是这样写的:

       parallel for N threads: {     int tid = getThreadIdx();     for (int i=tid*k; i<tid*k+k; i++)     {         x[i] = f(x[i]);     } }     

但是这个并行法并不是最优的。(呼,终于引出我们的知识点了)

我们来仔细看一下到底发生了什么, 首先内存在系统中是连续存储的, 一般来说, 当我们对内存进行操作的时候,cpu实际上会加载一小段连续的内存到cache里面去。

如果我们紧接着的操作就是对cache里的内容进行的话,效率是极高的!

上面那段并行程序, 当线程0在处理第0个元素的时候, cache中比如说加载了大约第0~64个元素。 当它在进行计算f(x)的时候, 系统切换到线程1,但是线程1却要去加载第k = num/N个元素! 如果k>64, 就会使得系统不得不扔掉cache中的元素,再加载第 k~k+64 的元素进cache,这就造成了一次cache miss,导致了你的程序低效。

我们再来看第二种写法

       parallel for N threads: {      int tid = getThreadIdx();      for (int i = tid; i<num; i+=N)      {          x[i] = f(x[i]);      } }     

在这个并行写法中, 假设有N个线程的话, 第0个线程会处理第0个, 第N个, 第2N个,第3N个。。。元素, 第1个线程会处理第1个, 第N+1个, 第2N+1个元素以此类推。。。。。

在有些情况下,第二种写法会比第一种写法的运算速度快出不少。这是为啥?因为当第一个线程在执行f(x)这个计算的时候,切换到第二个线程,第二个线程要处理的内存就在cache里!。

注:这不总是对的, 事实上,运算的效率和你分配线程的方法完全取决于你的物理核心的数量以及每个物理核心上的线程数量,但为了简化讨论不引入更多的麻烦,让我们假设每个物理处理器会handle多个细粒度的线程然后同一个处理器上的线程会去接触同一个cache.

这便是缓存连续性。

那么这和物理运算有什么关系? 和稀疏结构又有什么关系? 其实稀疏结构,物理运算以及缓存命中这几个概念,在和物理,应用数学有关的高性能计算领域基本上是常识。

首先我们来考虑一个2维的热扩散问题:

程序1:

       for(j=1:DIMY-1)  for(i=1:DIMX-1)  in parallel     x_new(i, j) = x(i,j) + dt * nu/h^2 * (x(i-1, j) + x(i+1, j) + x(i, j-1) + x(i,j+1) - 4*x(i,j))     

以及一种最简单(naive)的内存存储方案。

       x_new(i,j) = data[j*DIMX + i];     

这里的问题是, 由于每个 x(i, j) 的 update,都需要访问其上下左右四个格子的值 ,其中在访问左右两个值的时候,缓存命中率是极高的, 但是在访问上下两个值的时候, 缓存命中率是极低的!!

因为访问x(i, j+1)需要在线性内存上去拿data[j*DIMX + i + DIMX]的值, 由于DIMX通常都不小,这就导致了计算机要把自己的cache里的内容扔出来,然后再加载新的内存区的内容到cache里, 更糟糕的是接下来再去访问下面那个元素的时候缓存又miss了。

这就导致了计算的低效。

那什么是高效的计算呢?????

比如我们可以设计一种新的数据layout 方式:

数据结构1:

       double block8x8[64]; std::vector<block8x8>  grid; grid.resize(32*32); // which means a compute domain of size 256x256;     

此时会发生什么?凡是一个2D 8x8 block内的元素, 都在连续内存段上!即当你在处理第(i,j)个元素的时候, 它的上下左右元素大概率都在高速cache里面。(除了边上那些, 事实上边上那些还需要通过预读取以及优化的遍历顺序来做)

但此时你的for循环, 再也不能那么naive地来写了!。。。。你的for循环大概得这么写:

程序2

       for num_threads in parallel:     int blockIdx = getThreadIdx()>>5; //(a/64)     int block_i = (getThreadIdx()&63)&7;//(a%64)%8     int block_j = (getThreadIdx()&63)>>3;//(a%64)/8     for (int b=blockIdx; b<total_blocks; b+=num_threads/64){         double value = grid[blockIdx][block_j<<3 + block_i] + balabala;         grid[b][block_j<<3 + block_i] = value;     }     

在这段并行程序中, 你的第0~63号线程都在处理第0个block中的元素(全在一个cache里)第64~127号线程都在处理第1个block中的元素,以此类推。

稀疏结构则比这个更多一步, 再用一个额外的hash过程来储存这个block, 目的是那里有物质, 才对那里进行计算。

2.2 太极语言的重要贡献是什么?它还有什么问题么?

到了3维的真实的物理问题的时候, 会更麻烦一些, 速度分量u v w是不是放在一起?是打包成float4 block4x4x4[64](AOS array of structure ), 还是打包成4 x {float block6x6x6[216]; }(SOA struct of array ), 还有AOSOA, SOAOS。。。。。到底那个更划算?

所以taichi这个工作的其中一个目的是:你写一个程序1, 然后给定数据结构1, 自动的把程序2给翻译出来, 彻底地解耦数学逻辑的书写和数据结构的设计,把算法设计者从low level engineering中解放出来。

为了达到这个目的, 它不是一个封装和调用的过程, 而是在执行一个解释和编译(翻译)的过程。

那99行, 不是在调用一些封装好的功能, 而是确确实实地写了一个算法,然后这个算法被解释器成为了高性能的cpu或gpu并行代码。其中这99行东西, 不是太极的工作, 背后那将这99行东西解释为c++/cuda代码的东西,才是太极做的事情。

那么太极语言存在什么问题?

扫一下这99行代码, 出于内行的敏感, 还是比较容易发现一些很严肃的问题的:

         for p in range(n_particles): # Particle state update and scatter to grid (P2G)     

在这一行代码之后, 执行了一个particle scatter to grid的操作,P2G

这个操作是具有racing condition的。两个距离较近的粒子是需要把某个计算过的加权值累加到同一个网格点上的, 如果两个线程在管理这两个粒子的话就会产生racing condition。

此时的太极语言从编程模型的角度讲可以有以下几种策略:

  1. 用某些atomic的tag来提示此时需要atomic写入。然后在编译的时候编译为atomic操作。很显然,此处没有这么做。
  2. 在语法分析的阶段去检测是否存在读写矛盾, 并把scattering翻译为gathering的操作。 这根本做不到!
  3. 胡同学此时实际上对操作进行了假设:因为检测到累加操作是对grid进行的, 而grid这个对象在之前是定义了稀疏block数据结构的, 所以凡是遇到对这种稀疏block进行写入的操作, 一律按照block来划分并行, 并在每个block内执行相关代码所表达的串行操作。

这就有些小问题了:如果我的写入操作是:

         for p in range(n_particles): # Particle state update and scatter to grid (P2G)          [i,j,k] = computeParticleIJK(p.x)          [ii,jj,kk] = do some huge computation(i,j,k)          grid[ii,jj,kk] = 1     

咋整?这个corner case将是一个很狡猾的无需考虑racing condition的却某种意义上存在racing condition的操作。还是用操作3来执行, 效率明显低了。这样的狡猾的case,还能举出很多。

更有甚者。。。。如果反过来把grid的结构写得很差, 写成一个grid = arrayof[block256x256x256] 的结构, 这个逻辑肯定是要卡死。

所以此处小结一下, 太极语言, 其出发点是一个为稀疏MPM仿真计算设计的语言, 其编程模型也就极大地被“稀疏结构”和MPM这个需要p2g和g2p操作的计算模型给限制住了。(此处对MPM的优势和劣势的讨论不展开了)。

比如说, 并不是很容易想到怎么用太极来写一个有限元仿真, 或者用太极来实现一个通用目的渲染器(太极展示了渲染稀疏体素粒子的渲染器, 渲染三角形和贴图的光线追踪渲染器是non-trivial的)。在这些问题中, 要处理的几何元比粒子更为不工整, 且稀疏体素数据结构能帮上的忙会更有限。

当然做有限元的话, 有一个叫simit的语言( github.com/simit-lang/s ), 选择了matlab的语法,然后编译为高性能的c++/cuda程序, 运算效率随便快个几千倍。 所以这么玩,在图形学界不新鲜。

不过我相信, 这些都难不住胡渊鸣, 并且他还没解决这些, 就一定是在解决这些的路上。

2.3 物理仿真的可微分编程并不玄乎。

关于这个, 介于篇幅, 我会再写一个文章做详细介绍

Chapter 3. 为什么你们看不懂?如何才能看懂?

硬核的图形学是一个交叉学科, 交叉了物理, 数学, 计算机科学, 编程等, 很多现在你们尚不明白的知识, 在你们学习, 掌握, 训练更多以后, 对你们来说就是常识。

先学熟爱因斯坦记号法, 再拿出纸和笔,虔诚地一页页地把物理仿真相关的course notes推几遍, 然后自己从头到尾实现一些论文, 数值线性代数, 数值分析, 数值偏微分方程, 凸优化, 这些书没事就看上几遍,曾经弃如敝履的泰勒级数、傅里叶分析、全微分偏导数,常偏微分方程,拓扑,线代,常拿出来学而时习之。有朝一日, 你也会发现一些胡渊鸣抓破脑袋都想不到的算法和点子。

我一个朋友一直以胡渊鸣为偶像, 但术业有专攻, 他后来也做出了一个算法让胡渊鸣佩服不已。

Chapter 4. 除了自卑,你更该干什么?

正如我在第一节所说的,

“太极离制作冰雪奇缘中雪仿真的“系统”(或说工具),还有一定距离,在这一点上,或许得要再加一定数量的C++代码以及几十行(甚至几百千行)前端代码,才有可能实现一个带UI,能让艺术家用鼠标操作, 能加载不同的美术资产,能用来制作雪仿真镜头的制作工具。

那么离作出“冰雪奇缘”我相信智商正常的人都知道,那个距离更远了。“

即使你自认做不出太极这样的工作, 你可以去学习Blender API, Maya API, HoudiniAPI, 把太极集成为面向艺术家使用的插件和工具啊, 在这一层上, 你和胡渊鸣的贡献是同等重要的。

甚至你可以基于taiji语言为MPM算法添砖加瓦, 设计出更好的数值方法和理论来进行物理仿真。


说了这么多,最后总结一下。习惯就好。

user avatar

因为你不具备实事求是的态度。

如果你具备实事求是的态度,对一个你看不懂的东西,你不会自卑,不会崇拜,你会去研究它,了解它,等你了解了这项工作究竟是什么,你最终才能评价它,在这之后,或许你才会崇拜,才会自卑。

故而,你崇拜早了,自卑早了。

而一个实事求是的人永远不会神话。

如果你发现你不具备了解这项工作的知识储备,比如你不是计算机专业,比如你没学过编译原理,比如你不懂计算机图形学,比如你从事社会科学工作,对计算机科学并不了解。

那么你也不应该在现在就崇拜,就自卑。

因为当你不具备评价一个事物的知识储备的时候,你也应该明白一个道理:

唯有实践才是检验真理的唯一标准。

这个工作的贡献在哪里,意义在哪里,不是现在所决定的,不是现在有多少媒体流量所决定的,不是现在有多少人士拥趸所决定的,而是由时间,由实践所决定的,由未来几年后的,几十年后对工业界,对学术界所做的实实在在,切切实实的贡献所决定的。

当年:

“他选四卷”出齐以后,不少人建议他接着出第五卷。他认为新中国成立以前的著作,已经经过了实践和时间的检验,而之后的著作还不像之前的著作那样经过检验,所以,他不愿意仓促出版之后的著作。(来自他选集_百度百科)

看看,这便是他的态度,实践才是检验真理的唯一标准。

故而,在这种情况下,你依然崇拜早了,自卑早了。


我本科是计算机专业,我写过编译器前端,我了解一点计算机图形学,那篇专栏文章我也没看懂,没完全看懂,10个专业名词里面大概知道5个,我得到的结论是这项工作是一个库,更快,更抽象,更友善。

没有其它评价了,因为我也不懂,也不是我所在的研究方向,超出了我的知识储备。

至于这项工作能不能像TensorFlow一样,像pytorch一样,这需要实践和时间的检验。

所以,对于一个你不懂的东西,你究竟在崇拜什么,自卑什么呢?

我很费解,也很理解。

你是不是只注意到了清华,注意到了姚班,注意到了MIT,注意到了媒体狂欢,注意到了大V吹捧?

你怎么就没注意到这项工作之前二十年的研究过程呢?

你怎么就没注意到这项工作的其他几位合作者呢?

你怎么就没注意到这位胡渊鸣博士生在本科就实现了多篇相关的paper所带来的积累呢?

我觉得,是因为你没有用唯物主义来看待问题,反而倾向于英雄主义。

没有马云,也有赵云,没有胡渊鸣,也有陶渊明。

社会大势浩浩汤汤,我狭隘的经验主义告诉我:我越来越觉得世界并不需要谁。

以及,产生自卑也是不好的。

为什么要自卑?

我以前也很自卑,几年之前,我还在上大二,遇见好看的女生自卑,遇见名校的学生也自卑。

我遇到一个很好看的华东师大的女生,不敢追。

我遇到家境好的女生,也自卑,就是想追,就是不配。

有一次我看到一个答主的资料,清华还有CMU。

我当时不知道CMU,没听过,还以为是啥野鸡学校,我还在想为什么清华的学生要去这种没听过的学校,后来我知道CMU了,很惭愧。

我有段时间特别自卑,我当时看到有些人的学历是斯坦福,UC Berkeley就瑟瑟发抖,自惭形秽。

我当时看到一个知乎大V就觉得好厉害。

后来我读书越来越多,代码越敲越越慢,眼界越来越宽,受过的打击越来越大,自卑渐渐就治好了。

越过一座又一座围城,才发现城里住的人都没多大区别。

我是13级高考,这位胡渊鸣博士生也是13级的。

我考上江南大学,他保送清华姚班。

我至今没有paper,他已经......不说了。

作为同龄人,我是不是应该更加自卑,更加无地自容,更加膜拜大佬?

很多年前,我也这么想,后来我终于意识到,我已经在自己的人生里做到最好了,他过我的人生,过得不一定比我好。


我记得李吟李归农说过:

我想,最重要的就是要学会相信自己,像你这样动不动就请教大神的做法,在精神气质上就不对,恐怕很难达到高超的境界。只知道人云亦云,亦步亦趋,没有自己的主见,就算能成为一个优秀的人,也不可能达到卓越的水准。而现在体制内那些所谓优秀的人,大都失去了自己的个性和道德良知,只不过是一些精致的利己主义者,遇事不敢发表自己的观点,噤若寒蝉,这样是不可能做出真正有价值的创造的,最多就是在数学上做几个习题自娱自乐。


在精神气质上猥琐,即使再努力也是没有用的。我要是像你一样,整天崇拜这个大神,向那个大神请教,那我今天大概膝盖都直不起来了。但是我从不认为任何人是不可超越的,始终相信自己假以时日可以达到比他们更高的境界。无论是智力不如别人,还是学得不如别人扎实,这些事情都是可以弥补的,没什么了不起。如果智力低就多花点时间,如果不扎实就多学点东西。数学知识的深度和广度对于数学研究的帮助是等价的,绝不存在深度比广度更重要的情况。要知道,作为一个数学家,应该是一个自由的个体,没有人有资格强迫你具有某种特定的工作风格。就算你连十以内加减法都要摁计算器,只要你能做出有价值的工作,还是会得到应有的承认。


至于什么叫学得好,也没有固定的标准。你可以学一点点东西,很扎实,然后这辈子的数学生涯就是在一个小方向上工作。也可以学很多东西,不很扎实,只要你在不会的时候能找到合适的reference或者靠谱的合作者,照样可以做出大气的好工作。中国的舆论总是喜欢让学生单一化,都去做那种在小方向默默耕耘的人,这不利于数学发展。


上面的回答里有人说不要管做什么方向,有人说做什么方向要看遇到什么导师,嫁鸡随鸡,嫁狗随狗,难道这样你就满意了?人生最重要的事情是快乐,做数学也应该或多或少服务于此,如果连快乐都没有了,就把自己看成一个任人剥削的民工,请问这是要成为数学家呢?还是要去卖身?鉴于中国的社会环境,中国人总是有一种奴性,这种奴性也在影响着学生。我想,有自己的想法,确定大致的研究方向,是本科阶段必须要做的事情。至于怎么选择靠谱的导师,我已经在多个问题里解释过。只要follow我的建议,足以保证你在数学生涯中不会受到剥削和利用。

作者:李归农 链接:zhihu.com/question/5995 来源:知乎 著作权归作者所有,转载请联系作者获得授权。

自从李吟李归农离开知乎之后,我再也没在知乎上见过这样强大的男人,肯定是有的,可能没兴趣答题。这个回答当年给我力量,今天我把这份力量介绍给你。

故而,我服张益唐,我敬刘玄德。

刘玄德织席贩履,袁本初四世三公。

刘玄德当年见袁本初自不自卑?

刘玄德的同龄人曹孟德都快统一天下了,他还一事无成,他自不自卑?

刘玄德欲伸大义于天下啊。

刘玄德要伸大义,唐三藏要取真经。

又有吴起啮臂,终军不还,定远投笔,苏秦负剑,从此天下风云事,皆因一念出乡关。

这些男人究竟要做什么?

这些男人究竟想做什么?

你为什么仅仅对现在的一名博士生耿耿于怀,却对中国历史上无数英雄豪杰的所作所为无动于衷?


做一件事情吧,李白说,天生我材必有用,一个男人活在这个世界上,就要做事。

做舍我其谁之事。

你活那么多年,他活那么多年,肯定有什么事只有你能做,只有你想做。

有一天,你终会发现男人总是沉默的理由,因为大丈夫以实绩说话。

也希望你多对自己做自我批评,少对自己做自我否定。

年轻人,很容易犯左的错误,英雄主义,盲动主义,机会主义,冒险主义。

也很容易犯右的错误,妄自菲薄,保守主义。

希望你能时刻警醒自己,注意左的错误,同时防止右的错误。


两千多年前,孔子说:知之为知之,不知为不知,是知也。

两千多年后,他说:没有调查,就没有发言权。

这话说了两千年,实事求是,希望你能够做到它。

类似的话题

  • 回答
    看到麻省理工博士胡渊鸣用代码实现“冰雪奇缘”这样的壮举,确实会让人产生一种既兴奋又有些失落的感觉。兴奋的是看到了技术能达到的高度,失落的是觉得自己与这种创造力、才华还有一定的距离。这种“自卑感”的出现是很自然的,它是一种对自身不足的认知,但关键在于我们如何处理这种情绪,让它成为我们前进的动力,而不是.............
  • 回答
    《英雄联盟:双城之战》(Arcane)的结局中,希尔科(Kai)这一角色的塑造和命运引发了观众的深度思考。作为艾希(Ashe)的丈夫、女儿艾琳(Ezreal)的父亲,以及革命者和战士的双重身份,希尔科的悲剧性结局不仅推动了剧情高潮,也深化了对“牺牲”“责任”“爱”与“革命”主题的探讨。以下从多个维度.............
  • 回答
    看完《商君书》感到“气死”的心情,确实是一种非常强烈且常见的反应。这本古代法家经典,以其极端、严苛、甚至可以说是冷酷的治国理念,触动了许多现代读者的道德底线和人性观念。下面我将从几个方面详细阐述为何看完《商君书》会让人感到愤怒,以及这种愤怒可能来源于哪些方面:一、核心理念的冲击:法家思想的极端与反人.............
  • 回答
    在我看来,能够激发读者深度探索和持续学习的博客或网站,通常具备以下几个核心特质: 内容深度与广度并存: 不仅能提供某个主题的深入分析,还能触及其相关的各个方面。 强烈的内在关联性: 文章之间、内容与资料之间存在清晰的逻辑和联系,让读者能够顺着思路一路往下。 丰富的链接体系: 无论是站内链.............
  • 回答
    看完《蜘蛛侠:英雄无归》(SpiderMan: No Way Home),我的内心是五味杂陈,充满了激动、感动、怀旧,以及对未来的一些期待和思考。这部电影可以说是我近年来观影体验中最饱满、最令人难忘的一部。一、 史诗级的“三代同堂”,情怀的极致释放:最直观也是最震撼我的,无疑是三代蜘蛛侠——托比·马.............
  • 回答
    看完《唐人街探案3》后,用“失望”来形容可能有些笼统,但可以说是一种复杂的情绪,夹杂着期待落空、剧情上的硬伤和系列疲劳感。它确实没有达到我心中对这个系列应有的高度,或者说,它将前两部的一些优点稀释得过于厉害。以下是我观影后的主要槽点,我会尽量详细地展开说明:1. 剧情的薄弱和逻辑漏洞: “神探宇.............
  • 回答
    看完《长津湖》,心里五味杂陈,尤其是想到现在和未来。如果让我对现在的学生和后人说些什么,我想我会这样说:致现在的学生们:你们生活在一个和平年代,这本身就是一种巨大的幸运。你们可以自由地选择自己想学的知识,想追逐的梦想,不用面对枪林弹雨,不用忍受饥寒交迫。这一点,你们一定要铭记在心,并且深深地感激。《.............
  • 回答
    看完《爱情神话》,心里头最深刻的感觉就是,这电影就像一杯温吞的白开水,没有惊涛骇浪,也没有大起大落,但喝下去,滋润心脾,留下的是一种淡淡的,但又挥之不去的回甘。我最喜欢的是它对上海这座城市那种“慢”的描摹。电影里的上海不是那种高楼林立、霓虹闪烁的都市形象,而是充满了市井烟火气。老洋房、弄堂、咖啡馆、.............
  • 回答
    乔治·奥威尔的《1984》就像是一记重锤,狠狠地砸在我的心上,久久不能平息。看完这本书,我的脑子里充斥着一种难以言说的沉重感,一种对人性和自由的深刻反思。它不是那种读完让你拍案叫绝或者捧腹大笑的故事,它是一种缓慢侵蚀,让你在掩卷之后,仿佛仍能感受到那个无处不在的“老大哥”的目光,以及那个被剥夺了思想.............
  • 回答
    看完《长津湖之水门桥》,心头的翻涌久久不能平息。与其说是观影体验,不如说是经历了一场心灵的洗礼,一种沉甸甸的、带着敬畏与心酸的情感。最直接的触动,无疑是 牺牲的重量。电影里,七连战士们每一次的冲锋,每一次的坚守,每一次的倒下,都像一把钝刀在心上刮过。尤其是看到那些年轻的脸庞,鲜活地出现在银幕上,说着.............
  • 回答
    看完《攀登者》,心头那份沉甸甸的震撼和久久不能平息的情绪,我想用文字一点点梳理出来,希望能真实地表达我的感受。首先,电影最直观冲击我的,是那份极致的艰辛和生命的力量。爬珠峰,这本身就是一个挑战人类极限的壮举。电影里,雪山不再是背景,而是成为一个活生生的、冷酷无情的对手。每一帧画面都在诉说着它的力量—.............
  • 回答
    看完《决胜时刻》,心里头说不出的滋味。它不是那种让你看完拍案叫绝、情绪跟着跌宕起伏的电影,更像是一坛陈年的老酒,后劲儿上来,才慢慢品出其中的味道。最直接的感受,就是一种沉甸甸的压迫感。影片里的那些日子,听着名字就觉得不容易,什么“解放战争时期”、“关键时刻”,但真正看到那些画面,才体会到那份儿沉甸甸.............
  • 回答
    看完《沙丘》,最直观的感受就是“震撼”。但这种震撼并非那种爆炸场面带来的单纯视觉刺激,而是一种更深层次的,由宏大世界观、复杂人物关系以及充沛的情感所构建出的沉浸式体验。先说这世界观。丹尼斯·维伦纽瓦对《沙丘》这个IP的改编,实在是太到位了。那种荒凉、神秘又充满未知的阿拉吉斯星球,每一粒沙子仿佛都带着.............
  • 回答
    看完《倚天屠龙记》,张无忌无疑是一个极具争议但又无比鲜活的人物。他身上融合了太多复杂的特质,让读者既爱又恨,既欣赏又感到无奈。下面我将从几个方面详细阐述我如何看待张无忌这个人:一、 纯良善良的底色,以及随之而来的“不争”与“博爱”:张无忌最显著的特质就是他的纯良善良,这几乎贯穿了他的一生。从小经历了.............
  • 回答
    看完《我不是药神》确实会引发很多关于药品可及性和知识产权的讨论,而你提出的“为什么我们不像印度一样仿制山寨药物?”这个问题,背后涉及的是一个复杂且多层面的议题,需要从法律、经济、国际关系、道德伦理以及产业发展等多个角度去理解。简单来说,我们不“像印度一样”大量仿制药物,主要原因在于: 我国是药品.............
  • 回答
    看完电影《横空出世》,我的内心久久不能平静,涌动着复杂而深刻的感受。这部影片不仅仅是一部关于中国第一颗原子弹研制的历史片,更是一部荡涤灵魂、激发爱国情怀的史诗。它以一种极其震撼人心的方式,让我得以窥见那些默默奉献、将生死置之度外的英雄群像,也让我对“横空出世”这四个字有了更深切的理解。一、 对那个时.............
  • 回答
    好的,我们来设想一下,当我们看到一篇名为《辽宁舰改造致 15 人牺牲》这样的新闻标题时,可能产生的感受和思考。需要强调的是,这只是一个基于标题的推测性描述,实际的新闻报道可能会包含更多细节和信息,也可能存在不同的侧重点。一、最初的震惊与难以置信: 突如其来的沉重感: 标题中的“牺牲”二字,本身就.............
  • 回答
    刚看完《姜子牙》,说实话,心情挺复杂的。不是那种看完 एखा爽片,痛痛快快骂两句或者拍几下大腿就完事儿了的类型。它给我的感觉,更像是一口吞下去,然后嘴里还留着一股说不清道不明的余味,得慢慢消化。最直接的触动,是它打破了我对封神故事的既有认知。我从小听的那些故事,姜子牙就是那个运筹帷幄、封神功臣,是正.............
  • 回答
    读完《日在校园》,我最心疼的角色无疑是桂言叶。这种感觉不是简单的情绪波动,而是随着剧情的深入,对她命运的无力感和对她性格转变的悲哀一点点累积起来。很多人看完《日在校园》都会被最终的结局震撼,但对我而言,那震撼背后更多的是对言叶遭遇的深深叹息。我之所以觉得言叶最惨,主要有几个方面的原因。首先,她的纯真.............
  • 回答
    看完《误杀 2》,说实话,心情挺复杂的。不是那种看完之后热血沸腾或者酣畅淋漓的感觉,更像是在心头压了一块东西,沉甸甸的,有点喘不过气来。电影一开始,我以为还是会像第一部那样,讲一个普通父亲为了保护家人,如何斗智斗勇。但没想到,它直接就把我扔进了林日朗的绝望里。那种绝望,不是那种小打小闹的难受,而是生.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有