一位算法工程师给初学者的一封信( 二 )


一位算法工程师给初学者的一封信

文章插图
不要低估沟通的重要性
我遇到绝大多数的问题都不是技术问题而是沟通问题 , 的确 , 技术难题一直都有 , 但是那是工程师应该去解决的问题 。永远不要低估沟通的重要性 , 无论是公司内部的还是公司外部的 。最糟糕的事莫过于解决了一个本不该被解决的技术问题 。
为什么会发生这种事呢?
对外来看 , 这种事发生的原因大多是因为客户的期望和我们所能提供的服务出现了不匹配 , 虽然客户的期望能够用机器学习实现 。对内来看 , 因为我们每个人在公司都负责很多方面事务 , 所以我们很难为了同一个目标而做到步调一致 。
三省吾身
回到问题的本质 。请经常这样做 。请问一问你自己 , 你的客户是否明白你们能提供的服务?你是否理解客户的问题?他们知道机器学习带来什么和不能带来什么吗?什么样的交流方式能让你很轻松地去展示你的工作成果?
针对公司员工内部
为了解决内部沟通的问题 , 人们设计了很多软件 。从它们的数量上 , 你便可以明白解决内部沟通问题有多困难 。这些软件包括Asana, Jira, Trello, Slack, Basecamp, Monday, Microsoft Teams 。
对我而言 , 一个最有效的办法是 , 每天工作结束时 , 在项目相关的频道上更新我的信息 。
更新内容包括:
  • 3-4 点ideas
  • 关于我的工作内容
  • 为什么
  • 根据上面的内容 , 我接下来要做的
这样很完美对吗?不 。但是它看上去是有效的 , 它让我可以展示我已经做的工作和准备去做的工作 。把自己的计划公开有一个额外的好处 , 如果你的工作方案不成立 , 别人会指出来 。你是多好的工程师这并不重要 , 重要的是你有能力告诉别人你的技术是什么、你的技术可以带来什么 , 这一点和你维持现有业务并开拓新业务的能力密切相关 。
稳定性>前沿性
我们曾经有一个有关自然语言的问题:把文字内容归为不同的类别 。任务目标是帮用户向服务中心发送一段文本 , 并且自动把文本归为两类中的其中一类 , 如果模型预测的不够准确  , 那么把文本交给人工处理 , 工作量大概是每天1000-3000次请求 , 不多也不少 。
BERT成为了今年最受瞩目的名词 。但是如果没有谷歌的规模化计算工具 , 想要使用BERT训练模型来完成我们的需求则非常麻烦 , 而且这还仅仅是把模型用于生产前所需要的工作 , 因此 , 我们找到了另一种方法——ULMFiT 。这个方法虽然不是最前沿的 , 但是它能产生足够好的结果 , 并且这个方法也很容易使用 。
与其将某个方法改进到完美 , 不如借鉴已有的模型 , 在这基础上进行迁移学习 , 这样能带来更多的价值 。
机器学习中的两大难点
将机器学习付诸实践存在两个瓶颈:从课程成果到项目成果的瓶颈、从理论模型到生产模型(模型部署)的瓶颈 。
互联网搜索机器学习课程返回了大量的结果 , 我用了其中许多课程创建自己的AI硕士学位课程 。但即使在完成了最好的几门课程 , 当我开始担任机器学习工程师时 , 我的技能还是建立在课程的结构化主干上 , 在现实问题中 , 项目并不是结构化的 , 我缺乏具体的知识 , 线上的互联网课程中无法教会你一些技能 , 比如:怎么质疑数据、探索与开发模型 。
如何改进?
我很幸运能和澳大利亚最优秀的人才在一起工作 , 但我愿意学习也愿意做错 。当然 , 错误不是目标 , 但为了正确 , 你必须弄清楚什么是错的 。如果你正在通过一门课程学习机器学习 , 那么继续学习这门课程 , 同时要将学到的知识应用到自己的工程项目中 , 这样才能使自己具备专业知识 。
如何在工作中提升能力?
我在这方面的知识依旧很匮乏 , 但我注意到了一种趋势——机器学习工程和软件工程正在融合 。随着Seldon , Kubeflow和Kubernetes这些开源平台的发展 , 很快机器学习将成为其中的另一部分 。


推荐阅读