java转机器学习之后的一年,哎

前言

经历了,90天java转机器学习——面试学习总结,在新的工作岗位也是感触颇多。本来想继续写一篇悲惨201*系列,但还没到年底呢,万一没有最惨只有更惨呢,年底又能出一篇感人肺腑的大作()。这里就说说环境、期望的、实际的、学到的。

环境

(1)工作环境很好、食堂不错、距离适当、工作压力不大、加班不多。
(2)非互联网、为了健康吃的不多、步行一段当锻炼、新东西较多、业余时间工作补充学习也累。
(3)非核心业务组,努力将新技术应用到核心业务上。小组成员不多,五脏俱全,从需求到测试全都有。

期望的(本以为要做的)

(1)接触到机器学习后,感觉数据整理、特征提取、选择训练模型、模型验证、线上线下测试、模型调优,做啥都应该是上述流程。
(2)每天沉浸在论文阅读、算法对比、掉包或自己实现、各种特征处理骚套路、数学基础的学习,准确率提高一点点大家一起吹吹牛逼。
(3)如何解释算法是为何带来收益的,深度学习解释不了,总得找点理由编一编。
(4)LR、svm、gbdt、xgb等算法掉包、调参,上了直接用,然后补充理论知识。
(5)过渡到深度学习,又是一通学。NLP、推荐系统的开发、应用、上线。配合核心业务组添加所谓的算法模块。
(6)abtest,天天盯着数据。
(7)可能构建数据仓库。spark、hive、hadoop用的飞起,sql、redis、csv数据各种拿来拿去。日志收集整理,大数据量并发处理。

实际的

(0)哈哈哈,社会变化快,超出我的预想
(1)算法看了一波,NLP、推荐、CV等领域都碰了一下。
(2)python撸的越发熟练,突然发现java spring才是神一样的存在。开始怀疑python代码真的会比java代码量少吗?
(3)看论文、看视频、python手撸了不完整版本word2vec。和git上原版word2vec进行了pk。用自己下载的将近100g原始语料,整理、分词、送入模型。还用论文给的验证集进行验证。这波操作可能是迷茫的开始,因为找不到任何自己实现算法的优点。然后试了几个python NLP模型的包,发现都挺好。
(4)推荐系统,又是看论文、看视频、python实现协同过滤,但是到现在也不知道如何去存储那么大的矩阵,如何去线上使用。python又实现了类似item2vec,这个用的word2vec源码+自己整理的数据格式训练的模型,用户变向量、用户点击内容变向量。发现自己看明白了cos公式和代码实现。
(5)推荐系统外传。这波推荐学习真是用心了,看了不少论文(youtube经典、Netflix经典),同学讲解,又是啥服务商的讲座。最后结果呢,没上线啦。最后应该是弄了一个求相似的推荐程序,就放在那了。自己开发的类似item2vec系列,感觉只做了一个召回,排序只写了规则,排序没用任何模型。又是一次尴尬,还是不知道vec应当如何存储、线上使用啊。当向量很多的时候、模型也大,实时返回数据真的很慢。同学支招先算好相似的若干个,放起来,离线更新,最后也没机会尝试。这个程序安静的躺在自己的电脑里呢。
(6)各种浅学习、做实验,不求甚解吧,基本数据处理流程都没看。NLP、CV相关,git上源码拉下来,找到预训练模型,自己练练试试。

----------------------啪啪打脸分割线---------------------------------------------

(7)云服务全家桶啊。NLP、CV、语音、翻译等等,请找找提供的接口,能用的就直接用吧。比较麻烦的可能需要熟悉一下服务,预训练模型、算法内置了、数据放进去、等着、训练好模型、上线部署、调接口。调参?需要吗?
(8)日志收集服务已就绪,直接用就行了,啥并发,数据存储结构,人家都定了,完全满足需求。这部分需要好好练习sql,优化用法、典型查询例子都在那放着。这部分感觉有了我唯一上线的产出,就是几十个sql封装成的服务,做类似BI系统的展示。
(9)这段时间真是云服务学习大成,外加调试tensorflow、spark,当然也都是用用,完全没有深入了解啦。忽然发现,原来云服务也有自己的bug,各种包版本兼容问题,碰上了就迷茫,比改自己代码问题麻烦多了。这时候会觉得一些搜索引擎真心是不给力啊。
(10)数据工程师。其实搞搞数据也挺好,一段时间大量收集整理数据。包括NLP语料,CV处理的图片。这些当然是围绕google在git上的开源项目啦,什么word2vec,bert,object_detection。图片打标签弄了得有上万图片了,每天盯得眼睛干涩。2年前的技术,自己用还是需要一定门槛的,得静心看看文档,步骤比较多。

学到的

(1)aws全家桶吧,用了不少。
(2)sql,用于数据查询。这个还算有基础,用了一些hive里边的语法。
(3)TensorFlow、spark,不用就忘。tf一直不适应,感觉和其它程序风格不一样。
(4)nltk应用,NLP基础知识讲解,基本忘了。
(5)推荐,浅浅的了解了一下,应该是还算不上入门,实践太少。
(6)object_detection,face_recognization,单纯用用
(7)最大收获,看了数理统计一部分内容,终于知道为啥正态分布用的这么多了。感觉找到了机器学习里边一些理论基石的东西。对于自己来说,数学和英语真的是坎。数学呢,可能觉得《概率论与数理统计》浙大版,第5章大数定律和中心极限定理,是自己的极限了吧。英语呢,同学推荐了新东方语法3本。还需多学习多实践。

总结

人工智能相关技术应用到新的领域真的好难,没有借鉴的去想好难,能不能带来收益?作为一个大龄程序员呢?不知道还能保持这种磨叽叽的学习节奏多久。曾经觉得java延伸要学习的真的好多好多。现在真觉得java编程思想里边一句话是对的(也可能不是里边的啊)——java是可以学习一辈子的。换成数据、算法也一样吧。只是觉得更新的更快了,可能实际一点的真的也只能是用用了。毕竟10倍程序员很是遥远。

你可能感兴趣的:(程序人生)