我大学本科学的并非计算机相关专业,毕业后在外面工作了三年之后,考研重返校园,专业是计算机应用,算是半个科班出身。硕士毕业之后留在了武汉,然后就一直在武汉工作。在二线城市工作有一件比较尴尬的事情,就是跳槽选择少,这就需要看个人运气。如果企业发展的好,一直做下去,也有不错的前景。遗憾的是,我工作的第一家公司,主业是电信的公用电话。现在大街上已经没有公用电话的影子,在当年可是火热的很,公司也因此成功上市。然而,等我在公司正辉煌的时候进入,手机开始崛起,开始冲击公用电话市场。等大家都有手机的时候,谁还会用公用电话呢?我算是见证了手机从身份的象征开始走进千家万户,同时也见证了公司的衰落。期间公司虽然尝试转型,但转型哪是那么容易的。这期间,从后端管理系统到桌面软件,再到嵌入式系统,涉足的技术很多,但不精,公司没发展,个人也谈不上发展,呆了六年多时间,前途无望,离开了这家公司。其后的几个单位,都不是那种发展特别好的企业,活下去没问题,但是也没有大的作为。

就这样一直很平稳的工作着,结婚生子,一晃就迈过了四十大关。在我刚入行的时候,那时流行的说法是程序员30是一个坎,等我30岁的时候,门槛悄然变成35岁,然而等我到了40岁的时候,我依然在处在编程一线。幸亏个人心态比较好,要不真得给焦虑死。

工作生活在二线城市,工作和生活的压力要小得多,比如加班少、平时业余时间比较多,工作方面因为做了十几年开发,也算是轻车熟路。收入方面虽然相对于北上广深差很多,但相对当地的收入水平,还算是高薪,再加上买房买车也比较早,以前干一个月,至少可以买两个平方米的房子,所以生活上的压力也不大。

本来平淡的日子可能就会这样延续下去,有一天,我看了一本松浦弥太郎的《给40岁的崭新开始》一书,给了我很大的触动。作者在书中写道,随着现代医学和营养学的进步,人们健康活到80岁并不是不可能,更有乐观人士估计,我们这代人的平均寿命将达到100岁。如果从“70岁才是人生巅峰”的角度来思考,以40岁作为人生新的起点,步入中年并不是一件让人悲观的事情。

我决定行动起来,做点事情。其实也没啥雄心壮志,只是时间多,总需要做点事情。往哪个方向做,当时并没有想好,只是决定行动起来,开通了微信公众号,写下了第一篇文章《给40岁的崭新开始》。随后连续写了几篇书评和技术文章,但还没有定下人工智能这个方向。

2016年AlphaGo横空出世,引爆了人工智能这个领域,作为一名围棋爱好者,我也一直关注着。但我一直觉得人工智能太过高深,不是我这种平凡之辈可以驾驭的。然而这段时间,我有几个同事离职之后进入人工智能这个行业,让我大为吃惊,也让我开始了解人工智能这个行业。在了解这个行业之后,发现人工智能其实和其它行业一样,都有各自的分工,并不是每个人都需要去研究高深的算法,大部分人还是做工程技术性的工作,这样我可以从具体编程切入这个行业。向同事求证,也坚定了我的想法。

有了想法,需要立即行动起来。考虑到数学理论知识差,在知乎和论坛上也查看了大神们的帖子,决定从《机器学习实战》这本书入手。这本书没有从理论角度来揭示机器学习算法背后的数学原理,而是通过“原理简述+问题实例+实际代码+运行效果”来介绍每个算法。

从事编程这么多年,我还是知道虽然实际中不需要掌握很深的理论知识,但了解一些理论对于算法的理解还是必不可少的,所以我又选择了《机器学习》一书作为补充。

这本书被网友亲切的称为西瓜书,也是一本教科书,而且是一本入门的教科书。其宗旨是理清基本概念、了解领域概貌。虽然作者试图尽可能少的使用数学知识,但相比《机器学习实战》,这本书的数学公式还是多了不少,对读者的要求也要高一些,读起来相当吃力。

针对这个选择,当时写了一篇文章《数学不好,进入机器学习领域还有戏吗?》,也算是给自己打气。

接下来就是啃这本《机器学习实战》,很辛苦,将书中的代码一行行亲自敲进电脑、运行,看西瓜书,力争透彻理解算法,输出文章谈对算法的理解。虽然说以编程实例为基础,但涉及到的理论还是让我很头疼,学习进展也很慢。一次我将我的苦恼向朋友倾诉,朋友指出,现在的机器学习框架,都有封装好的算法,如果不从事算法优化工作,其实不需要把算法理解得很透彻,只需要掌握基本原理,更重要的是在实际项目中如何选择算法,如何使用框架快速实现并部署。这也点醒了我,我不就是准备从编程入手,怎么学着学着就在那儿死磕算法呢?朋友还建议我看一看吴恩达的《machine learning》的在线课程。

于是,我又转向了吴恩达的《machine learning》在线课程的学习。

吴恩达的《Machine Learning》在线课程就不用我赘述了,有两个学习途径:

  1. 上Coursera在线教学网站学习,优点是每周的学习之后可以在线答题,可以提交答案检验是否正确,而且还可以做编程练习,编程练习提交到系统后,系统可以自动测试程序是否运行正确。缺点是需要科学上网,而且有些视频并没有中文字幕。
  2. 上网易云课堂学习,优点是速度快,全部视频都有中文字幕。缺点是没有在线习题,也没有编程练习。

在这两个地方学习,都是完全免费。我一直都在科学上网,英文字幕也勉强能看懂,所以我是上Coursera网站学习的。当然也可以在网易云课堂上看视频,到Coursera上做习题和编程练习。这门课程虽然叫机器学习,但其实重点讲的是回归和梯度递减算法,而没有像《机器学习实战》那本书那样涉及好多机器学习的算法。对于线性回归和逻辑回归以及梯度算法讲的非常透彻,辅助以代码实例,也容易懂。每个章节后面都有习题加深巩固。从第二周开始每周有编程联系。整个课程安排了十一周,这是考虑到学习时间有限的情况下,其实如果时间充裕,一天完成一周的学习都没问题。

这门课我认认真真学习了每个视频,完成了每个习题和编程练习。这门课让我开始对机器学习有些感觉,对于回归和梯度算法有了比较深入的了解。编程练习采用的是和matlab兼容的Octave语言,要是选择python语言就更完美了。当然Octave语言也比较简单,稍微学习一下就可以上手。

学完这门课程之后,我又马不停蹄的学习了他的另一门课程《Deep Learning》,准确的说是一个微专业,包含了五门课程:Neural Networks and Deep Learning、Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization、Structuring Machine Learning Projects、Convolutional Neural Networks、Sequence Models,每门课程安排了大约3到4周的学习时间,每个章节都给出了建议学习时间。如果是边工作边学习,就按照这个进度学习就很好。

这门微专业在网易云课堂上同样免费,在Coursera上也可以免费看,但如果要在线提交习题和编程练习,需要收费,折合人民币308元。考虑到在Coursera上可以在线做练习,308元的价格也不贵,我选择了付费,国内带VISA标志的信用卡可以付费,直接折算成人民币付款。

每节课成后面的习题,我都认真做了分析,并写在公众号里:

[神经网络与深度学习] Introduction to deep learning习题解析

[神经网络与深度学习] Neural Network Basics习题解析

[神经网络与深度学习] Shallow Neural Networks习题解析

[神经网络与深度学习] Key concepts on Deep Neural Networks习题解析

[改善深度神经网络] Practical aspects of deep learning习题解析

[改善深度神经网络] Optimization algorithms习题解析

[改善深度神经网络] Hyperparameter tuning, Programming Frameworks习题解

[卷积神经网络]课程:The basics of ConvNets习题解析

[卷积神经网络]课程:Deep convolutional models习题解析

[卷积神经网络]课程:Detection algorithms习题解析

[卷积神经网络]课程:Face recognition & Neural style transfer习题解析

[序列模型] Recurrent Neural Networks习题解析

[序列模型] Natural Language Processing & Word Embeddings习题解析

编程练习使用了Google的TensorFlow框架,考虑到Google在业界的影响力,我决定主要使用TensorFlow框架,为此还看了一本《TensorFlow实战》。

这本书谈不上经典,但比较适用,作为了解TensorFlow框架的基础书籍,还算可以,但这本书我并没有看完,只挑了我感兴趣的章节。

对深度学习以及TensorFlow框架有了一定的掌握之后,决定做一个小项目来练练手。一次看到微信上的识花君小程序后,决定做一款类似的小程序,拍照识狗,取名为识狗君。这实际上是一个图片分类问题。图片分类问题是深度学习最基础的应用,各种图片分类的示例代码满大街。但对于一个新手来说,照着代码一行行敲,运行出来不难,但对于一个新项目来说,还是有许多问题需要解决:

  1. 狗狗图片数据集哪里来?
  2. 选择哪种图片分类模型?如何再训练?是采用端侧推理还是在服务器端识别?
  3. 微信小程序如何开发?
  4. 模型如何部署?
  5. 微信小程序如何与服务端通信?

在这个开发过程中,我在公众号上分享了我对于项目的考虑,碰到的问题,研究的方法:

这个中秋,我开发了一个识别狗狗的app

一头栽进了tensorflow lite的巨坑里

当微信小程序遇上TensorFlow:Server端实现

当微信小程序遇上TensorFlow:Server端实现补充

当微信小程序遇上TensorFlow:小程序实现

当微信小程序遇上TensorFlow:接收base64编码图像数据

当微信小程序遇上TensorFlow:终章

识狗君微信小程序的部署

项目的所有源代码都放在github上:github.com/mogoweb/aid…

需要注意的是: TensorFlow框架一直在进化中,可能上面的代码在最新框架上并不能直接使用,我正在考虑将其移植到TensorFlow 2.0上。另外上述的方法并非最优方法,只是我在当时能想到的最好方法。如果你有什么好的想法,欢迎交流。

当时看到报道,有AI写诗、AI作曲、AI作画,对GAN(对抗生成网络)产生了兴趣,还买了一本《实战GAN》。

最初了解到生成对抗网络(GAN),是从知乎专栏:深度有趣,该专栏的作者是张宏伦,一位上海交通大学的博士,知识渊博,文笔也很好,可惜的是这个专栏到今年年初就没有再更新。

如果大家对生成对抗网络没什么概念,那可以看看下面的图中,哪张是真实图片,哪张是AI生成的?

答案揭晓,两张图片都是AI生成的,这可不是从真实图片经过PS处理而得来的。另外拍卖史上首幅AI画作也已经诞生,以估价60倍的US$432,000(RMB 300万)成交。

想想也觉得神奇吧!正是因为对此充满了好奇,所以我决定扎进去看一看。然而进入之后,才发现这里的水很深,都是一些大腕在玩,比如NVIDIA、Google、微软之类的,再加上部分研究机构。研究这个领域,需要强大的计算资源,个人去做的话,生成个手写数字还差强人意,要生成一个稍微看得下去的图像,训练一个模型,动辄好几天,太难了。《GAN:实战生成对抗网络》这本书看了前面几章,写了几篇笔记:

实战生成对抗网络[1]:简介

实战生成对抗网络[2]:生成手写数字

实战生成对抗网络[3]:DCGAN

后面就没有继续再看,等哪天功力到了,再捡起来。

深入到深度学习领域之后,发现深度领域也有很多方向,比如图像处理、自然语言处理、强化学习、GAN等等。对于大神而言,可以多方突击,但对于我这样的普通人来说,能把一个方向弄清楚就不错了,所以我决定还是选择图像处理这个方向作为重点深耕对象。

我个人比较信奉学习+实践的策略,喜欢书本结合实例动手。定下图像处理这个主题方向后,我就去搜寻这方面的书,找到一本《Deep Learning for Computer Vision with Python》,感觉比较适合我。这本书是英文版,国内没有翻译版本,也没出影印版,所以我看的是PDF版本。这本兼顾了理论和实践两者之间的平衡,对每一个深度学习理论,都会有一个关联的Python实现来帮助你巩固对其的理解和学到的知识。书中有详细的代码,且代码都有比较详细的说明,对Engineer非常友好。

一本好书:Deep Learning for Computer Vision with Python

在学习过程中,我写了几篇总结笔记:

使用数据增强技术提升模型泛化能力

站在巨人的肩膀上:迁移学习

聊一聊rank-1和rank-5准确度

再谈迁移学习:微调网络

提高模型准确率:组合模型

深度学习中超大规模数据集的处理

试试kaggle竞赛:辨别猫狗

微架构模型:GoogleNet

学习的日子总是过得很快,从我下定决心学习人工智能,已经过去一年零两个月,时间也翻到了2019年5月。在这中间我还尝试过结合本行,研究浏览器中的机器学习:tensorflow.js,前段时间还买了一块Nvidia出品的人工智能开发板Jetson。对我来说,学习总是一件充满乐趣的事情,总有新鲜的事情可以去探索。虽然现在的本职工作和人工智能并没有什么关系,但说不定哪天,副业就会转正呢?

我的大龄程序员的人工智能学习之路暂时划上句号,但我的人工智能学习并没有终结,我还会在这条路上继续摸索前行,也欢迎各位结伴同行。

学习人工智能都是在业余时间进行,但其实跑步、练习书法和读书占据了我大部分时间,另外周末还要陪娃,所以总体上说,我的人工智能学习之路进展缓慢,但我相信,日拱一卒无有尽。

念念不忘,必有回响,和大家共勉!

你还可以读:

  1. 给40岁的崭新开始
  2. 中年程序员该焦虑吗?
  3. 我编程,我快乐
  4. 数学不好,进入机器学习领域还有戏吗?

转载于:https://juejin.im/post/5cfc7f416fb9a07f0c4674d7

大龄程序员的人工智能学习之路相关推荐

  1. 【转】一个40岁老程序员的前端学习之路|2021 年中总结

    40岁的老程序员感言 时光给我留下了什么? 不知不觉间虚度了40年光阴,看着父母逐渐的苍老和孩子逐渐长大,看着自己发福的身材,已知道自己在这个陌生的城市里已经扎根,估计是很难再去哪里了.回首故里似乎和 ...

  2. 一个40岁老程序员的前端学习之路|2021 年中总结

    40岁的老程序员感言 时光给我留下了什么? 不知不觉间虚度了40年光阴,看着父母逐渐的苍老和孩子逐渐长大,看着自己发福的身材,已知道自己在这个陌生的城市里已经扎根,估计是很难再去哪里了.回首故里似乎和 ...

  3. 三四十岁的大龄程序员,到底该怎么做才能避免失业?

    V-xin:ruyuanhadeng获得600+页原创精品文章汇总PDF 目录 一.40岁回首往事:自己竟没有任何核心优势 二.公司遇到危机时40岁大龄程序员会怎么样 三.适合大龄程序员的几条职业发展 ...

  4. 【我命由我不由天】30多岁的大龄程序员,应该如何保持职场竞争力?

    公众号后台回复"学习",获取作者独家秘制精品资料 扫描下方海报二维码,试听课程: (课程详细大纲,请参见文末) 目录 回首往事:自己竟没有任何核心优势! 公司遇到危机时,大龄程序员 ...

  5. 三四十岁的大龄程序员,如何保持自己的职场核心竞争力?

    这篇文章,给大家聊聊Java工程师的职业发展规划的一些思考,同时也给不少20多岁.30多岁,但是对自己的职业未来很迷茫的同学一些建议. 笔者希望通过此文,帮大家梳理一下程序员的职业发展方向,让大家知道 ...

  6. 32岁大龄程序员真的不好找工作吗?给大家分析一下我的真实经历

    今天终于开始上班了,32岁大龄程序员找工作找了一个半月,今天终于有了工作,感觉人也比较开心了.这份工作不包住,但包吃,吃的还可以.今天真是个好日子,工作终于有着落了.在这里首先感谢大家这段时间来对我的 ...

  7. 想要转人工智能,程序员该如何学习?(学习路线、知识体系)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 对于程序员来说,码农之路并不是一帆风顺.对于每一个入行IT业的社会青年来说,谁不是抱着想要成为最高峰 ...

  8. 大龄程序员该何去何从,35岁后的路在何方

    提到程序员,大家的第一反应可能都是高薪水.福利好,但是作为程序员,他们同样有自己的焦虑,都说程序员是吃青春饭的,在企业里你很少会看到35以上的程序员,难道35真的是程序员的一道魔咒吗? 35岁以后的程 ...

  9. 大龄程序员 “敢问路在何方?”

    我发了一篇题为"35岁程序员的独家面试经历"的文章,结果引起了不少大龄程序员的共鸣和感慨,大家都对大龄技术人员的未来非常关心,有的迷惘,有的坚定,不一而足.因此,我准备写一篇文章专 ...

最新文章

  1. WPF:WPF显示PDF文档 之 编译 MoonPdfLib库
  2. leetcode算法题--最低票价★
  3. ITK:越界像素返回常数值
  4. 学习opencv3_如何高效学习计算机视觉?
  5. 投屏时,客厅电视与客厅电视DMR的区别
  6. 大学mysql期末试题_四川大学数据库系统期末试题2014-2015.doc
  7. Apache Rewrite实现URL的跳转和域名跳转
  8. html表格怎么改圆角边框,Table元素设置圆角border
  9. 分表用到的一些函数/php mysql 前面补0
  10. 开发人员一定要加入收藏夹的网站
  11. 《算法竞赛入门经典2th》 习题 2-4 子序列的和
  12. 群体智能和进化计算-介绍
  13. Android截屏截图方法所有方法汇总(包括Activity、View、ScrollView、ListView、RecycleView、WebView截屏截图)
  14. 公司企业邮箱开通使用,收不到邮件怎么办?
  15. MATLAB泰勒级数展开
  16. 蚂蚁区块链BaaS平台应用开发指南(五):JS SDK的接入
  17. pythonocc常见问题集锦
  18. 翻译: 4.多层感知器 pytorch
  19. Edraw soft
  20. 重磅!保姆级教程:个人深度学习工作站配置指南

热门文章

  1. C语言和Python,哪个更适合入门?
  2. 自编码-李宏毅深度学习/机器学习
  3. 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)
  4. 01背包问题——动态规划详解
  5. Postman基于Chrome扩展插件安装
  6. Map KeySet方法
  7. 如何锻炼独当一面的能力
  8. 解决aspera 下载ENA 数据报错Session Stop (Error: Client unable to connect to server (check UDP port and fire
  9. 关于车联网系统设计思路(一)
  10. E5071C ENA 矢量网络分析仪苏深圳全国租售