Software development division: on machine learning, you learn backwards ......

The full text 4221 words, when learning is expected to grow 13 Fenzhong

Figure source: Unsplash

 

As more and more companies employ artificial intelligence, machine learning engineer - the development of artificial intelligence (AI) and machine capable of learning and applying knowledge of the demand for advanced programmers increases.

These professionals need to be programmed to respond to complex data sets / algorithms, artificial intelligence and further training machine.

More and more software engineers began to transition artificial intelligence, and most people are starting from scratch learning machine learning.

However, compared to the new framework of machine learning is more difficult to master.

As an effective practitioner, you need to fully understand the theory in the field, wide master the most advanced current knowledge and the ability to shape the way uncertain issues.

Many online guide will simply teach you how to plan a training model on a good set of data can be used immediately, and to achieve a good degree of accuracy, and then it was over. In fact, to become a good learning machine engineer must master a wider range of skills.

So what about artificial intelligence, visionary software engineer What should learn it?

Figure source: Unsplash

 

I also remember the first time to learn the codes are in high school, his father was a programmer, he opened a text editor, on the screen, enter the following code:

  1. public class HelloWorld {
  2. public static void main(String[]args) {
  3. System.out.println("HelloWorld.");
  4. }
  5. }

"It is used to do?" I asked.

"This will print 'Hello World'." The father replied.

"What public? What is Class? What is static that? ......"

"Ignore these words. These are just boilerplate."

But it is not read those so-called boilerplate frightened, so start learning those words mean. It was found that this complex and boring, almost killed the young aspiring writer programmers.

Today, software development is much easier to learn than I high school, mainly because of sites like codecademy.com, establish the basic development environment is also easier, as well as full professors like Python and Javascript so advanced, interpretive language.

从对编码一无所知到在浏览器中编写下第一条条件语句,只需要几分钟即可。没有杂乱的环境设置、安装、编译器或样板需要处理——可以直接进入有趣的部分。

这正是最好的学习方式。首先,要学习高水平的核心概念,只有这样,才能欣赏和理解背后的细节以及它们为什么重要。先学习Python,然后是C语言,再然后是汇编语言,而不是反过来。

然而不幸的是,如今,很多人开始学习机器学习时和笔者学习Java时有着同样的经历。先学习最低级的细节——分层架构、反向传播、丢弃法(Dropout)等等——这让人以为机器学习是非常复杂的,也许应该先上一堂线性代数课,然后放弃。

这很遗憾,因为在不久的将来,大多数用机器学习的软件开发师是不需要去思考,也不需要知道任何低级的概念。正如(通常)不需要汇编代码,也不需要实现TCP栈或加密库一样,程序员只是将机器学习作为工具,而将细节留给一小部分专家去解决。在这一点上——机器学习“民主化”后——开发人员将不需要理解实现细节,而需要掌握应用这些智能算法的最佳实践。

不要像这样

 

 

现在进展到的阶段

如今,如果想建立一个神经网络来识别照片中猫的脸,或者预测下一条推特是否会走红,那么可能需要开始学习 TensorFlow或者PyTorch了。这些基于Python的深度学习库是当今设计神经网络最流行的工具,而它们的出现都还不足5年。

在其短暂的生命周期中,TensorFlow已经成为一种比五年前更加方便用户的方式了。在早期,想要成为一名合格的TensorFlow程序员,不仅要了解机器学习,还要了解分布式计算和延迟图形架构。即使是写一份简单的书面声明也困难重重。

Keras/TensorFlow/PyTorch受欢迎程度细细分, 由Quora提供

 

就在今年早秋,TensorFlow 2.0正式发布,新框架对开发人员更加友好。下面是TensorFlow 2.0的Hello-World式模型:

  1. model = tf.keras.models.Sequential([
  2. tf.keras.layers.Dense(512, activation='relu'),
  3. tf.keras.layers.Dropout(0.2),
  4. tf.keras.layers.Dense(32, activation='relu'),
  5. tf.keras.layers.Dense(1, activation='softmax')
  6. ])
  7. model.compile(optimizer='adam',
  8. loss='sparse_categorical_crossentropy'),
  9. metrics=['accuracy']))
  10. model.fit(x_train, y_train, epochs=5)
  11. model.evaluate(x_test, y_test)
  12. viewrawhello_world_keras.py hosted with ❤ by GitHub

如果以前设计过神经网络,那上面的代码是简单易读的。但是如果没有设计过神经网络或者正处于学习阶段,可能会产生一些疑问。

比如,丢弃法(Dropout)是什么?这些密集的层(layers)是什么,需要多少,又该放在什么位置?sparse_categorical_crossentropy是什么?TensorFlow 2.0消除了一些构建模型的阻碍,但并没有抽象出设计那些模型的实际架构。

 

发展方向

那么,操作简便的机器学习工具未来会是什么样子呢?从谷歌、亚马逊到微软、苹果,每个人都在探索这个问题的答案。此外——免责声明——这也是笔者作为谷歌工程师一直在思考的问题。

首先,人们将会看到更多的开发人员使用预先训练好的模型来完成常见任务,也就是说,不需要收集自己的数据或训练自己的神经网络,而是可以使用谷歌/亚马逊/微软的已有模型。许多云提供商已经这样做了。例如,通过点击谷歌云REST终端,就可以使用预先训练的神经网络来:

· 从图像中提取文本

· 标记照片中的常见对象

· 将语音转换为文本

· 语际翻译

· 识别文本的情感

· 其他

也可以使用谷歌的ML Kit或苹果的Core ML等工具,在设备上的移动应用程序中,运行预先训练好的模型。

坦白说,与使用TensorFlow构建的模型相比,使用预训练的模型优势在于(除了易用性之外),谷歌研究人员在整个数据网络和大量GPUs 和TPUs上训练神经网络模型,会比程序员自己构建的更精确。

使用预先训练的模型的缺点是,它们解决的是一般性问题,比如在图像中识别猫和狗,而不是特定领域的问题,比如识别装配线上某个部件的缺陷。

但是,即使在为特定领域的任务训练自定义模型时,这些工具也正在变得更加易于使用。

可教机器的屏幕截图,这是一个在浏览器中建立视觉、手势和语音模型的工具。

 

谷歌的免费 可教机器网站允许用户使用拖拽操作在浏览器中收集数据和训练模型。今年早些时候,麻省理工学院发布了一个类似无代码的界面,用于构建在触摸屏设备上运行的自定义模型,该界面是为医生等非编码人员设计的。微软以及像lobe.ai这样的初创公司也提供类似的解决方案。同时,谷歌云自动机器学习是一个针对企业工作负载的自动化模型训练框架。

 

接下来学什么

随着机器学习工具更加易于使用,希望使用这种技术(但不是成为专家)的开发人员,其技能将会发生变化。所以,如果想像韦恩-格雷茨基(Wayne-Gretsky)那样计划冰球的走向,现在应该学什么呢?

知道什么时候使用机器学习总是很难……

机器学习算法不同于标准软件的地方在于它们是概率性的。即使是一个高度精确的模型有时也会出错,这意味着对很多问题来说它不是最佳解决方案,特别是对于它本身。以基于机器学习的语音转换为文本的算法为例:当让Alexa“关掉音乐”时,她错把闹钟调到凌晨4点,这影响不大。但如果医学版的Alexa错把医生给开的药Adderall听成了Enulose,影响就大了。

理解什么时候以及如何在生产中使用模型始终是一个微妙的问题。在以下情况下尤其棘手:

1. 风险很高

2. 人力资源有限

3. 人类对预测有偏见或预测不准确

以医学影像为例。在全球范围内都缺少医生,在诊断疾病方面,机器学习模型通常比训练有素的医生更准确。但是人们会想让算法对自己是否患有癌症持最后的发言权吗?帮助法官判刑的模型也是如此。模型可能有偏见,但人也是如此。

理解什么时候使用机器学习是有意义的,如何正确地应用它不是一个容易解决的问题,但是这个问题不会很快消失。

图源:Unsplash

 

可解释性

众所周知,机器学习模型是不透明的。这就是为什么它们有时被称为“黑匣子”。人不太可能用“神经网络告诉我的”作为唯一的证据,来说服副总裁做出重大的商业决策。另外,如果不明白为什么模型会做出这样的预测,人可能就不会意识到它在做出有偏见的决定(比如拒绝贷款给特定年龄或特定地区的人)。

正是因为这个原因,机器学习领域的许多玩家都着眼于构建“可解释的人工智能”性能——让用户更仔细地检查模型用什么性能来进行预测的工具。人们还没有将解决其作为一个行业问题进行解决,但正在取得进展。例如,在11月,谷歌推出了一套解释工具以及一种叫做模型卡的东西——一种帮助用户理解机器学习模型局限性的可视化指南。

谷歌的人脸识别模型卡显示了该模型的局限性。

 

通过应用取得创新

有些开发人员擅长机器学习,有些开发人员擅长神经科学,但很少有人两者都擅长。几乎任何复杂的领域都是如此。未来几年,人们从机器学习中看到的最大进步可能不是来自改进的数学方法,而是来自不同专业领域的人,他们学习了足够多的机器学习并将其应用到自己的领域。例如,在医学成像中,最令人兴奋的突破——能够在扫描中发现恶性疾病——不是由新的神经网络架构取得的,而是由应用于新问题的相当标准的模型取得的。

所以,如果软件开发人员幸运地拥有额外的专业知识,那么他就已经领先了。

 

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

发布了691 篇原创文章 · 获赞 2327 · 访问量 29万+

Guess you like

Origin blog.csdn.net/duxinshuxiaobian/article/details/103875238