对于神经网络,硕士博士不需要弄明白原理,只需要应用,是这样吗?
我从工业界面试的角度来回答下这个问题。我在大厂工作期间面试了不少candidates, 自己也面试过不少岗位, 只会掉包,蒙着头拼积木==失业。过得了简历关你也绝过不了后面N轮面试。那么对于“神经网络的原理”(加引号是因为我觉得神经网络没啥真的原理可言)到底要掌握到什么程度才算合格?
- 能手撕 前向/反向传播
这应该是每一个做DL的最最最基本的要求。给一个两层的做regression/classification 的neural network,给一个简单的1D vector, 把它的forward propagation写出来,还要用chain rule把back propagation也给推导出来,最好除了公式之外,能现场给个实际的input vector把相应的矩阵运算给算出来。
2. 对常见的loss function和激活函数要如数家珍,并且知道大概的优势/劣势。举个简单的例子,softmax和sigmoid有什么联系, relu相对tanh优势是啥。
3.对非常经典的论文要有较好的了解,并且有自己的“insight”在里头。举个例子,ResNet很经典大家都知道,那么它到底为什么用简简单单的结构做出了惊人的效果?再比如,虽然你是做图像分割的,但如果我问道Yolo的巧妙构思之处在哪你却连Yolo里面是啥都不清楚,基本也要被我挂了。这说明你做东西钻地太窄,失去了应有的广度。
4.对你自己专精的领域要有很深的认知,知道近期sota的设计理念,能大概说一说它们本身可能存在的缺陷。
5. 加分项:如果你对matrix本身有些基础的理解,比如Gauss-Jordan求逆怎么做,SVD大致步骤之类的会加分不少。另外如果你对传统图像处理,像sift, hog这些还有了解也会大大加分。
上述这几点从我近来几年的观察来看,可以说是大厂偏research岗位的基本要求,其实用一句话概括就是:知其然,更要知其所以然。所以回到你的问题,硕士博士不懂神经网络原理是否能行,撇开你是否能发论文不说,搁到工业界面试这边等于凉凉凉。
————————更新—————————
讲实话,我没想到还有些从业者觉得上述前四个算是面试造航母,现在大家的水准这么参差不齐了吗 ?搞我们这行的难道不应该对经典论文(一共也没多少篇,手指头都能数得过来)如数家珍,对自己深耕领域了如指掌?不然你自己闷着头写自己的算法吗 你可以完全不care我说的这几条,但等到你找大厂CV/DL工作的时候我觉得95%概率凉凉。