很多小伙伴在学习了深度学习一段时间后,不可避免的要遇到面试的问题。
1.1、归属感。一个经常换公司换岗的员工,能力再大,也不能要。所以如果看到一份简历满满当当的都是跳槽和实习简历,两个月换一个实习,半年换一份工作,除非能说出很充分客观的理由,否则公司可能不会通过这份简历。
1.2、编码能力。公司要招聘的是一个计算机视觉领域(CV)算法工程师,招进来是要干活的。它不会招聘一个只会Matlab或者python都用不熟的人来做项目开发,做纯算法研究都不行,一个不能实现自己想法的牛人我还没见过。毕竟真正的牛人不仅算法好,编程能力也强大。
接下来就该说说具体怎么办了,如果你有耐心,不妨接着看下去。
2.1、为什么要用Linux
在以前,你可能觉得Linux并非刚需,用着自己的Windows电脑,也不需要与人共享操作系统,硬件和磁盘。但是如果你们团队一起使用服务器,不可能不用Linux。
所以这是对还没有在Linux上面真正进行日常开发工作的小朋友说的,要正式进入AI行业发展,Linux是必备和唯一的操作系统,“软”兵器,我还没有听过哪家公司在Windows或者Mac上面训练模型的。
2.2、提高开发效率
编程习惯,工作效率很重要,很重要!Linux下一个熟练的工程师,会比Windows下工作效率高很多,提高写代码效率可以从终端多任务管理,熟练使用shell命令,熟练使用vim等开发环境,熟练使用git命令等地方入手。
git是程序员必备的素养,慢慢学会维护几个自己的代码库,等到将来出问题的时候就明白了。
在机器学习领域,python可谓是一骑绝尘,学习python需要掌握好基础的语法包括函数,类设计,掌握大量的开源矩阵库Numpy等。
python简单吗?简单。真的简单吗?看看大神们写的项目吧。
深度学习有一个最大的问题,就是太好用了。导致什么图像基础和传统算法都不需要懂,也能项目做的风生水起。
但是如果没有好的图像基础,总有一天遇到CNN解决不了的问题,或者无法单独解决的问题,就不知所措了。
如果说图像处理领域有什么库是绕不过去的,那一定是OpenCV,这一个开源计算机视觉库堪称最优秀的计算机视觉库,不仅可以学术和商业免费使用,而且跨平台,高性能。需要掌握的基础内容包括:如何部署,基本数据结构的熟悉与使用,基本模块的了解。
深度学习项目开发中最重要的是什么,当然是数据!实际的项目你经常没有足够多的数据,这个时候就需要自己去想办法获取了。
互联网是一个什么资源都有的大宝库,学会使用好爬虫,你将可能成为时代里最有“资源”的人,这也很可能是项目成功的开始。
本文最后的一个实际项目就需要用到。
爬取完数据之后就应该进行处理了,一个很常用的手段是数据可视化。在深度学习项目中,常需要的数据可视化操作包括原始图片数据的可视化,损失和精度的可视化等。
除了对数据可视化,我们还需要对模型进行可视化,方便调试和感知。
虽然对于大部分来说,做项目不需要多么强悍的数学基础,但是你会需要看懂别人论文,也会经常需要进行简单的推导和算法改进。
从线性代数,概率论与统计学到微积分和最优化,都是需要掌握的。不过数学的学习是一个非常漫长的过程,不要急于求成,也不是靠跟着视频或者书本就能完全学会的,重要的是用起来。
学习和做项目都需要一个方向,在前面这些基础都掌握好了,就要好好了解一下计算机视觉的各大研究方向及其特点,方便自己选题和项目方案定型了。
从图像分类,分割,目标检测,跟踪,到图像滤波与降噪,增强,风格化,三维重建,图像检索,GANs,相信总有你喜欢或者项目涉及的。
学习最终是为了解决实际问题,AI已经渗入到了我们生活的方方面面。从自动驾驶汽车、图像美颜,到聊天机器人,金融支付等,因此好好了解下当前AI在各大领域的应用没错的,这次就不仅仅限于计算机视觉了。
要想真正融入行业圈子,紧跟技术发展,就必须要时刻了解大佬们的状态,他们就是行业发展的风向标。
不管是学术界还是工业界,不管是老师傅还是青年才俊,让我们一起见贤思齐吧。
基础打好了,接下来就是正式学习AI相关的知识,不管是在哪个课堂或者教材,都是让大家先了解先贤们。
从图灵与机器智能,冯诺伊曼与类脑计算引发的人工智能启蒙,到三次浪潮的曲折和技术的成长史,值得每一个从事该行业的人阅读。
深度学习研究问题的方法就是仿造大脑,根基是神经网络。从感受野,到MP模型,到感知机,到反向传播,要很熟悉全连接神经网络的劣势,卷积神经网络的特点,核心技术和优势,这是学习深度学习最重要的基础。
既然学深度学习,就必须要了解深度学习的重要进展。
在前深度学习时代,视觉机制的发现,第一个卷积神经网络Neocognitron的提出,反向传播算法的流行,促进了LeNet5和MNIST数据集的诞生。
随着新理论的成熟,大数据的积累,GPU的普世,以卷积神经网络为代表的技术在图像分类,目标检测等基础领域取得重大突破,随着AlphaGo的成功同时在业内和业外人士的心目中种下了深度学习/人工智能技术的种子,从此焕发勃勃生机。
大脑学习知识靠抽象,从图像中抽象知识是一个“从大到小”过滤提炼信息的过程。从视觉机制中来的pooling即池化,正是对信息进行抽象的过程。
池化增加了网络对于平移的不变性,提升了网络的泛化能力,大家已经习惯了使用均值池化mean pooling和最大池化(max pooling),虽然可以用带步长的卷积进行替代。
尽管池化究竟起到了多大的作用开始被研究者怀疑,但是池化机制仍然是网络中必备的结构,所以你一定要熟悉它,而且基于数据驱动的池化机制值得研究。
如果一个模型只能在训练集上起作用,那是没有用的。
因此我们总是希望模型不仅仅是对于已知的数据(训练集)性能表现良好,对于未知的数据(测试集)也表现良好,即具有良好的泛化能力,通过添加正则项来实现。
从直接提供正则化约束的参数正则化方法如L1/L2正则化,工程上的技巧如训练提前终止和模型集成,以及隐式的正则化方法如数据增强等,研究人员在这方面投入的精力非常多,大家一定要时刻关注。
口说无凭,用数据说话才是研究者们进行PK的正确姿态。计算机视觉的任务何其多,从分类,回归,质量评估到生成模型,我们当然需要掌握科学的评估方法。
深度学习神经网络的核心概念,模型的学习需要指导,这正是损失函数的责任,它往往对模型最终表现如何影响巨大
学会重点总结分类问题,回归问题,生成对抗网络中使用的损失目标,为设计更好的优化目标奠定理论基础。
感谢各位看官的耐心阅读,不足之处希望多多指教。