Comment on I spy with my computer vision eye… Wally? Waldo? by Rick Searle   
Here is the NY Times article I mentioned: http://www.nytimes.com/2012/11/24/science/scientists-see-advances-in-deep-learning-a-part-of-artificial-intelligence.html?_r=0 And s skeptical rejoinder: http://www.newyorker.com/online/blogs/newsdesk/2012/11/is-deep-learning-a-revolution-in-artificial-intelligence.html What's your take?
          Baidu releases open source deep learning benchmark tool to measure inference   
Baidu releases open source deep learning benchmark tool to measure inference

Baidu Research, a division of Chinese Internet giant Baidu, has released its open source deep learning benchmark tool. Called DeepBench, the new solution comes ...

The post Baidu releases open source deep learning benchmark tool to measure inference appeared first on Open Source For You.


          BigDL Democratizes Deep Learning Innovation   

Deep learning—a subset of machine learning and a key technique of artificial intelligence (AI)—is the most rapidly growing area of AI innovation. Big data and deep learning are technologies cut from the same cloth. They’re both enabled by the explosion of data brought about by the digital world.  But to deal effectively with mountains of ...continue reading BigDL Democratizes Deep Learning Innovation

The post BigDL Democratizes Deep Learning Innovation appeared first on IT Peer Network.

Read more >

The post BigDL Democratizes Deep Learning Innovation appeared first on Blogs@Intel.


          ディープラーニングとStreet ViewイメージによるGoogle Mapsの改善   

GoogleのGround Truthチームは先頃、 Googleマップの改善を目的として、位置情報の画像ファイルから情報を自動的に抽出する、新たなディープラーニングモデルを発表した。このニューラルネットワークモデルは、難易度の高いFSNS(French Street Name Signs)データセットにおいて、高い精度を達成している。

By Srini Penchikala Translated by h_yoshida
          BigDL Democratizes Deep Learning Innovation   

Deep learning—a subset of machine learning and a key technique of artificial intelligence (AI)—is the most rapidly growing area of AI innovation. Big data and deep learning are technologies cut from the same cloth. They’re both enabled by the explosion of data brought about by the digital world.  But to deal effectively with mountains of ...continue reading BigDL Democratizes Deep Learning Innovation

The post BigDL Democratizes Deep Learning Innovation appeared first on IT Peer Network.

Read more >

The post BigDL Democratizes Deep Learning Innovation appeared first on Blogs@Intel.


          VW Announces Deep Learning Partnership With California Firm   
News
This week VW announced a strategic partnership with a Silicon Valley tech firm in hopes of bolstering its artificial intelligence capabilities.
Staff Author: 
Topics: 

          原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习   




原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
网络

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
算法

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
测试

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
机器学习

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
深度学习



前言
机器学习和深度学习现在很火!突然间每个人都在讨论它们-不管大家明不明白它们的不同!
不管你是否积极紧贴数据分析,你都应该听说过它们。
正好展示给你要关注它们的点,这里是它们关键词的google指数:

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
如果你一直想知道机器学习和深度学习的不同,那么继续读下去,下文会告诉你一个关于两者的通俗的详细对比。
我会详细介绍它们,然后会对它们进行比较并解释它们的用途。

目录表
1 机器学习和深度学习是什么?
1.1 什么是机器学习?
1.2 什么是深度学习?
2 机器学习和深度学习的比较
2.1 数据依赖
2.2 硬件依赖
2.3 问题解决办法
2.4 特征工程
2.5 执行时间
2.6 可解释性
3 机器学习和深度学习目前的应用场景?
4 测试
5 未来发展趋势

1.什么是机器学习和深度学习?
让我们从基础开始——什么是机器学习,什么是深度学习。如果你已经知道答案了,那么你可以直接跳到第二章。

1.1 什么是机器学习?
“机器学习”最受广泛引用的定义是来自于Tom Mitchell对它的解释概括:
“如果一个计算机程序在任务T中,利用评估方法P并通过相应的经验E而使性能得到提高,则说这个程序从经验E中得到了学习”
这句话是不是听起来特别难以理解?让我们用一些简单的例子来说明它。

例子1-机器学习-基于身高预测体重

假如你现在需要创建一个系统,它能够基于身高来告诉人们预期的体重。有几个原因可能可以解释为什么这样的事会引起人们兴趣的原因。你可以使用这个系统来过滤任何可能的欺诈数据或捕获误差。而你需要做的第一件事情是收集数据,假如你的数据像这个样子:


原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
图中的每个点都代表一个数据点。首先,我们可以画一条简单的直线来根据身高预测体重。例如是这么一条直线:
Weight (in kg) = Height (in cm) - 100
它可以帮助我们做出预测。如果这条直线看起来画得不错,我们就需要理解它的表现。在这个例子中,我们需要减少预测值与真实值之间的差距,这是我们评估性能的办法。

进一步说,如果我们收集到更多的数据(经验上是这样),我们的模型表现将会变得更好。我们也可以通过添加更多的变量来提高模型(例如`性别`),那样也会有一条不一样的预测线。


例子2-风暴预测系统
让我们举个复杂一点点的例子。假设你在开发一个风暴预测系统,你手里有过往所有发生过的风暴数据,以及这些风暴发生前三个月的天气状况数据。
想一下,如果我们要去做一个风暴预测系统,该怎么做呢?

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
首先,我们需要探索所有数据并找到数据的模式(规则)。我们的任务是寻找什么情况下会引起风暴发生。
我们可以模拟一些条件,例如温度大于40摄氏度,温度介于80到100之间等等,然后把这些“特征”手动输入到我们的系统里。
或者,我们也可以让系统从数据中理解这些特征的合适值。
现在,找到了这些值,你就可以从之前的所有数据中预测一个风暴是否会生成。基于这些由我们的系统设定的特征值,我们可以评估一下系统的性能表现,也就是系统预测风暴发生的正确次数。我们可以迭代上面的步骤多次,给系统提供反馈信息。
让我们用正式的语言来定义我们的风暴系统:我们的任务`T`是寻找什么样的大气条件会引起一个风暴。性能`P`描述的是系统所提供的全部情况中,正确预测到风暴发生的次数。而经验`E`就是我们系统的不断重复运行所产生的。

1.2 什么是深度学习?
深度学习并不是新的概念,它已经出现好一些年了。但在今时今日的大肆宣传下,深度学习变得越来越受关注。正如在机器学习所做的事情一样,我们也将正式的定义“深度学习”并用简单的例子来说明它。
“深度学习是一种特别的机器学习,它把世界当做嵌套的层次概念来学习从而获得强大的能力和灵活性,每一个概念都由相关更简单的概念来定义,而更抽象的表征则通过较形象的表征计算得到。”
现在-这看起来很令人困惑,让我们用简单的例子来说明。

例子1-形状检测
让我们从一个简单的例子开始,这个例子解释了概念层次上发生了什么。我们来尝试理解怎样从其他形状中识别出正方形。

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
我们的眼睛首先会做的是检查这个图形是否由4条边组成(简单的概念)。如果我们找到4条边,我们接着会检查这4条边是否相连、闭合、垂直并且它们是否等长的(嵌套层次的概念)
如此,我们接受一个复杂的任务(识别一个正方形)并把它转化为简单的较抽象任务。深度学习本质上就是大规模的执行这种任务。

例子2-猫狗大战
让我们举一个动物识别的例子,这个例子中我们的系统需要识别给定的图片是一只猫还是一只狗。

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
如果我们把这个当做典型的机器学习问题来解决,我们会定义一些特征,例如:这个动物有没有胡须,是否有耳朵,如果有,那是不是尖耳朵。简单来说,我们会定义面部特征并让系统识别哪些特征对于识别一个具体的动物来说是重要的。
深度学习走得更深一步。深度学习自动找到对分类重要的特征,而在机器学习,我们必须手工地给出这些特征。深度学习的工作模式:


首先识别一只猫或一只狗相应的边缘


然后在这个基础上逐层构建,找到边缘和形状的组合。例如是否有胡须,或者是否有耳朵等


在对复杂的概念持续层级地识别后,最终会决定哪些特征对找到答案是有用的

2.机器学习和深度学习的比较
现在你已经了解机器学习和深度学习的概念了,我们接着将会花点时间来比较这两种技术。

2.1 数据依赖

深度学习和传统机器学习最重要的区别在于数据量增长下的表现差异。当数据量很少的时候,深度学习算法不会有好的表现,这是因为深度学习算法需要大量数据来完美地实现。相反,传统机器学习在这个情况下是占优势的。下图概括了这个事实。



原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习

2.2 硬件依赖
深度学习算法高度依赖高端机器,相较之下传统的机器学习算法可以在低端机器中运行。这是因为深度学习算法对GPU的依赖是它在工作中的重要部分。深度学习算法内在需要做大量的矩阵乘法运算,这些运算可以通过GPU实现高效优化,因为GPU就是因此而生的。

2.3 特征工程
特征工程是将领域知识引入到创建特征提取器的过程,这样做的目的在于减少数据的复杂性并且使模式更清晰,更容易被学习算法所使用。无论从对时间还是对专业知识的要求,这个过程都是艰难的而且是高成本的。
在机器学习中,绝大多数应用特征需要专业知识来处理,然后根据领域和数据类型进行硬编码。
举个例子,特征数据可以是像素值、文本数据、位置数据、方位数据。绝大多数的机器学习算法的性能表现依赖于特征识别和抽取的准确度。
深度学习算法尝试从数据中学习高级特征。这是深度学习一个特别的部分,也是传统机器学习主要的步骤。因此,深度学习在所有问题上都免除了特征提取器的开发步骤。就像卷积神经网络会尝试学习低级特征,例如在低层中学习边缘和线条,然后是部分的人脸,再接着是人脸的高层表征。

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习

2.4 问题解决办法
当使用传统机器学习算法求解一个问题时,它通常会建议把问题细分成不同的部分,然后独立地解决他们然后合并到一起从而获得最终结果。然而深度学习却主张端对端地解决问题。
让我们用一个例子来理解。
假设你现在有一个多目标检测任务。这个任务要求识别目标是什么和它出现在图像中的位置。

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
在一个传统机器学习方法中,你会把问题分成两个步骤:目标检测和目标识别。首先你会用一个像grabcut一样的边框检测算法来扫描图像并找到所有可能的目标。然后,对所有被识别的对象,你会使用对象识别算法,如带HOG特征的SVM,来识别相关对象。
相反地,在深度学习方法中,你会端对端地执行这个过程。例如,在一个YOLO网络中(一款深度学习算法),你传入一个图像,接着它会给出对象的位置和名称。

2.5 执行时间
通常神经网络算法都会训练很久,因为神经网络算法中有很多参数,所以训练它们通常比其他算法要耗时。目前最好的深度学习算法ResNet需要两周时间才能完成从随机参数开始的训练。而机器学习相对而言则只需要很短的时间来训练,大概在几秒到几小时不等。
但在测试的时候就完全相反了。在测试的时候,深度学习算法只需要运行很短的时间。然而,如果你把它拿来与K-近邻(一种机器学习算法)来比较,测试时间会随着数据量的增长而增加。但是这也不意味着所有机器学习算法都如此,其中有一些算法测试时间也是很短的。

2.6 可解释性
最后,我们也把可解释性作为一个因素来对比一下机器学习和深度学习。这也是深度学习在它被应用于工业之前被研究了很久的主要因素。
举个例子,假设我们使用深度学习来给文章自动打分。它打分的表现十分的好并且非常接近人类水平,但是有个问题,它不能告诉我们为什么它要给出这样的分数。实际在数学上,你可以找到一个深度神经网络哪些结点被激活了,但我们不知道这些神经元被模型怎么利用,而且也不知道这些层在一起做了点什么事情。所以我们不能结果进行合理的解释。
在另一方面,机器学习算法例如决策树,通过清晰的规则告诉我们为什么它要选择了什么,所以它是特别容易解释结果背后的原因。因此,像决策树和线性/逻辑回归一样的算法由于可解释性而广泛应用于工业界。

3.机器学习和深度学习目前的应用场景?
维基百科文章给出了机器学习所有应用场景的概述,它们包括:


计算机视觉:例如车牌号码识别和人脸识别


信息检索:例如文字和图像的搜索引擎


市场营销:自动邮件营销,目标监察


医疗诊断:癌症识别,异常检测


自然语言处理:情感分析,图片标注


在线广告等。


原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
上图简要总结了机器学习的应用领域,尽管它描述的还包括了整个机器智能领域。
一个应用机器学习和深度学习最好的例子就是谷歌了。

原创翻译 | 深度学习与机器学习 - 您需要知道的基本差异!深度学习
上图中,你可以看到谷歌把机器学习应用在它各种各样的产品中。机器学习和深度学习的应用是没有边际的,你需要的是寻找对的时机!

4.测试
为了评估你是否真正了解这些差异,我们接着会来做一个测试。你可以在这儿发布你的答案。
请注意回答问题的步骤。


你会怎样用机器学习解决下面的问题?


你会怎样用深度学习解决下面的问题?


结论:哪个是更好的方法?


情节1:
你要开发一个汽车自动驾驶的软件系统,这个系统会从摄像机获取原始像素数据并预测车轮需要调整的角度。

情节2:
给定一个人的认证信息和背景信息,你的系统需要评估这个人是否能够通过一笔贷款申请。

情节3:
为了一个俄罗斯代表能解决当地群众的问题,你需要建立一个能把俄文翻译成印地语的系统。

5.未来发展趋势
上述文章可以给了你关于机器学习和深度学习以及它们之间差异的概述。本章中,我想要分享一下我对机器学习和深度学习未来发展趋势的看法。


首先,由于工业界对数据科学和机器学习使用需求量的增长,在业务上应用机器学习对公司运营会变得更加重要。而且,每个人都会想要知道基础术语。


深度学习每天都给我们每个人制造惊喜,并且在不久的将来也会持续着这个趋势。这是因为深度学习已经被证明是能实现最先进表现的最佳技术之一。


机器学习和深度学习的研究会持续进行。但与前些年局限于学术上的研究有所区别,深度学习和机器学习领域上的研究会在工业界和学术界同时爆发。而且随着可用资金的增加,它会更可能成为整个人类发展的主题。

我个人紧随着这些趋势。我通常在关于机器学习和深度学习的新闻中获得重要信息,那些信息会使我在最近发生事情中不断进步。而且,我也一直关注着arxiv上每天更新的论文以及相应的代码。

结束语
在这篇文章中,我们从一个相对高的角度进行了总结,并且比较了深度学习跟机器学习的算法之间的异同点。我希望这能让您未来在这两个领域中的学习中变得更有自信。这是关于机器学习以及深度学习的一个学习路线。
如果您有任何的疑问,完全可以放心大胆地在评论区提问。

英文原文链接:https://www.analyticsvidhya.com/blog/2017/04/comparison-between-deep-learning-machine-learning/


          Nvidia zeigt Tesla V100 (GTC 2017)   
Nvidia stellte auf der GTC 2017 unter anderem die V100 vor, eine für Deep-Learning gedachte Beschleunigerkarte mit Volta-GPU
          Nvidia GTC 2017 Keynote   
Nvidia stellte auf der GTC 2017 unter anderem die V100 vor, eine für Deep-Learning gedachte Beschleunigerkarte mit Volta-GPU.
          Improving Customer Service with Amazon Connect and Amazon Lex   

Customer service is central to the overall customer experience that all consumers are familiar with when communicating with companies. That experience is often tested when we need to ask for help or have a question to be answered. Unfortunately, we've become accustomed to providing the same information multiple times, waiting on hold, and generally spending a lot more time than we expected to resolve our issue when we call customer service.

When you call for customer assistance, you often need to wait for an agent to become available after navigating a set of menus. This means that you're going to wait on hold regardless of whether your issue is simple or complex. Once connected, the systems that power call centers generally don't do a good job of using and sharing available information. Therefore, you often start out anonymous and can't be recognized until you've gone through a scripted set of questions. If your issue is complex, you may end up repeating the same information to each person you talk to, because context is not provided with the handoff. It's easy to end up frustrated by the experience, even if your issue is successfully resolved.

At Amazon, customer obsession is a fundamental principle of how we operate, and it drives the investments we make. Making sure that customers have a great experience when they need to call us is something that we've invested a lot of time in. So much so, that in March 2017, we announced Amazon Connect, which is the result of nearly ten years of work to build cloud-based contact centers at scale to power customer service for more than 50 Amazon teams and subsidiaries, including Amazon.com, Zappos, and Audible. The service allows any business to deliver better over-the-phone customer service at lower cost.

When we set out to build Amazon Connect, we thought deeply about how artificial intelligence could be applied to improve the customer experience. AI has incredible potential in this area. Today, AWS customers are using the cloud to better serve their customers in many different ways. For instance, Zillow trains and retrains 7.5 million models every day to provide highly specific home value estimates to better inform buyers and sellers. KRY is helping doctors virtually visit patients and accurately diagnose aliments by applying machine learning to symptoms. Netflix is using machine learning to provide highly personalized recommendations to over 100 million subscribers. There are really exciting projects everywhere you look, including call centers.

When Amazon Connect launched, we spoke about the integration with Amazon Lex. One of the really interesting trends in machine learning lately has been the rise of chatbots, because they are well suited to fulfilling customer requests with natural language. Amazon Lex, which uses the same conversational technology as Amazon Alexa, is Amazon Web Services' deep-learning powered chatbot platform. By linking Amazon Lex chatbots into the Amazon Connect contact flow, customers are able to get help immediately without relying on menus or specific voice commands. For example, an Amazon Lex driven conversation with your dentist's office might look like this…

Connect: "Hello, thanks for calling. Is this Jeff?"

Jeff: "Yes"

Connect: "I see you have a cleaning appointment this Friday. Are you calling to confirm?"

Jeff: "No, actually."

Connect: "Ok, what are you calling about?"

Jeff: "I'd like to change my appointment to be next Monday."

Connect: "No problem, I have availability on Monday July 3rd at 11:00 AM. Does that work?

Jeff: "That's fine."

Connect: "Great. I have booked an appointment for you on Monday, July 3rd at 11:00 AM. Is there anything else I can help you with?

Jeff: "Can you send me a text confirmation?"

Connect: "Sure. I have sent a text message confirmation of your appointment to your cell. Can I do anything more for you?"

Jeff: "No, that's great. Bye."

The chatbot is able to quickly and naturally handle the request without waiting for an agent to become available, and the customer was never presented with menus or asked for information the office already had. AWS Lambda functions made the corresponding calls to the database and scheduling software, making sure that the interaction happened quickly and at extremely low cost. The workflow-based functionality of Amazon Lex and Amazon Connect also helps to reduce mistakes by making sure interactions play out consistently every time.

If the customer's issue is not able to be resolved by the chatbot, Amazon Lex is able to pass on the full context of the conversation to a human representative. This keeps the customer from wasting time repeating answers to questions and lets the representative focus 100% of their time on solving the problem, which increases the odds the customer is going complete the call feeling positive about the experience.

Today, we're announcing the general availability of Amazon Lex integration with Amazon Connect. We've also enhanced the speech recognition models used by Amazon Lex to support integration with other call center providers as well, so that all telephony systems can start using AI to improve customer interactions.

We think artificial intelligence has a lot of potential to improve the experience of both customers and service operations. Customers can get to a resolution fast with more personalization, and human representatives will be able to spend more time resolving customer questions.

Getting Started: Amazon Connect is available to all customers in the US East (N. Virginia) region. You can get started by visiting https://aws.amazon.com/connect. Additional information on Amazon Lex integration can be found at https://aws.amazon.com/connect/connect-lexchatbot.


          With More Partnerships, Nvidia Solidifies Its Grip on Self-Driving Tech   
With More Partnerships, Nvidia Solidifies Its Grip on Self-Driving Tech -

From its roots as a provider of graphics processing power for video games, Nvidia has risen to become one of the most important Silicon Valley companies developing technology for self-driving vehicles. This was underscored recently when the company announced further collaborations with two major OEMs—Volvo and Volkswagen—and top global automotive supplier ZF. Together, the announcements signal that automakers are using Nvidia’s technology for a broad range of autonomous systems, some of which are tilting from research-and-development projects into firm production plans.

-

Chief among them: Volvo will use Nvidia’s Drive PX computing platform, pictured above, to develop advanced software and artificial-intelligence applications for autonomous vehicles. The two companies had already collaborated on the XC90 SUVs used in Volvo’s Drive Me project, and this announcement entrenches their relationship as Volvo plans to launch autonomous vehicles by 2021.

-
-

-
“On the platform side, Nvidia is clearly dominating
-in the development and early-implementation phases
-of autonomous vehicles.” – Mike Ramsey, Gartner
-
-

-
-

Speaking at the Automobil Elektronik Kongress in Germany, Nvidia chief executive officer Jensen Huang further announced the company will continue developing deep-learning technology with Volkswagen at the automaker’s Silicon Valley laboratory and that it will deepen its partnership with global supplier ZF Group.

-

The announcements come at a time when competitors such as Intel are investing billions in self-driving technology and the race to provide chips, platforms, and artificial intelligence is ramping up. Tesla Motors was the first to use the Drive PX in production vehicles, and Nvidia has a long-standing relationship with Audi. More recently, it has inked deals with Toyota, Mercedes-Benz, and global supplier Bosch.

-

-

“On the platform side, Nvidia is clearly dominating in the development and early-implementation phases of autonomous vehicles based on the announcements that have come so far,” says Mike Ramsey, research director at Gartner, a global technology consulting company. “These recent announcements extend their lead.”

-

At Volvo, Nvidia will be developing both hardware and software while working with the Swedish automaker’s top supplier, Autoliv, as well as Zenuity, a new subsidiary of both companies formed earlier this year to focus on software development. Some of the work will remain proprietary to Volvo, while in some cases, Autoliv will be free to market products to other automakers.

-

“This is significant, because a lot of the development work we’re doing can be leveraged by other automakers,” said Danny Shapiro, senior director of Nvidia’s automotive business unit. “You’re starting to see the industry welcome these type of collaborations.”

-
-

-
“We need to be a systems supplier, and we need
-to understand the whole system to understand
-the functionalities of the future.”
-– Stefan Sommer, ZF
-
-

-
-

Look no further than ZF, which also announced a deal with German lighting and sensor component supplier Hella. The companies plan to work together on camera and radar ventures that could help OEMs meet upcoming European New Car Assessment Program (NCAP) standards being developed for the mass deployment of semi-autonomous and autonomous vehicles. Nvidia is now a piece of that puzzle. Drive PX will underpin the efforts of ZF and Hella to create artificial-intelligence software that optimizes camera and radar data for autonomous or semi-autonomous functions. Stefan Sommer, CEO of ZF Group, says perfecting the combination of that artificial-intelligence information with mechanical systems is vital.

-

-

“We need to be a systems supplier, and we need to understand the whole system to understand the functionalities of the future and see business models that we can sell with software solutions,” Sommer said. “By combining our technology and understanding it with each other, we are much faster and have a benefit in terms of having a promising technology other competitors do not have.”

-

With Volkswagen, the fruits of Nvidia’s collaboration are a bit further down the road. The two companies are working at VW’s Silicon Valley Data Lab to explore how vehicular information stored in data centers can be gleaned for insights, such as how traffic flow can be improved in particular cities. They’re using artificial intelligence in data centers instead of in the cars themselves, but in many ways, Nvidia’s Shapiro said, that’s just as important.

-

-
· Bosch and Nvidia Bank on Self-Driving Collaboration Paying Off, Eventually
-
· Intel’s Blockbuster Acquisition Reshapes the Self-Driving Race
-
· We Ride in Audi and Nvidia’s Self-Driving Q7
-

-

“AI is having a transformative effect on the auto industry in general, and a lot of this means focus on the Drive PX in the car, and running deep-learning algorithms in the vehicle, but there are lots of other implications for vehicles and connected cars,” he said.

-

 

- Reported by Car and Driver 5 hours ago.
          A Deep Learning Performance Lens for Low Precision Inference   

Few companies have provided better insight into how they think about new hardware for large-scale deep learning than Chinese search giant, Baidu.

As we have detailed in the past, the company’s Silicon Valley Research Lab (SVAIL) in particular has been at the cutting edge of model development and hardware experimentation, some of which is evidenced in their publicly available (and open source) DeepBench deep learning benchmarking effort, which allowed users to test different kernels across various hardware devices for training.

Today, Baidu SVAIL extended DeepBench to include support for inference as well as expanded training kernels. Also of

A Deep Learning Performance Lens for Low Precision Inference was written by Nicole Hemsoth at The Next Platform.


          Artificial intelligence – it’s deep (learning)    
Maschinenmensch (machine-human) on display at the Science Museum at Preview Of The Science Museum's Robots Exhibition

Maschinenmensch (machine-human) on display at the Science Museum at Preview Of The Science Museum's Robots Exhibition at Science Museum London.; Credit: Ming Yeung/Getty Images Entertainment Video

AirTalk®

To what extent can we trust artificial intelligence if we don’t understand its decision-making process?

This may sound like a science fiction scenario, but it’s an ethical dilemma that we’re already grappling with.

In his recent MIT Technology Review cover story, “The Dark Secret at the Heart of AI,” Will Knight explores the ethical problems presented by deep learning.  

Some context: one of the most efficient types of artificial intelligence is machine learning – that’s when you program a computer to write its own algorithms. Deep learning is a subset of machine learning which involves training a neural network, a mathematical approximation of the way neurons process information, often by feeding it examples and allowing it to “learn.”

This technique has taken the tech world by storm, and is already being used for language translation, image captioning and translation. The possibilities are extensive, with powerful decision making potential that can be used for self-driving cars, the military and medicine.

However, when an AI writes its own algorithm, it often becomes so complicated that a human can’t decipher it, creating a “black box,” and an ethical dilemma. What are the trade-offs to using this powerful technique? To what extent can humans trust a decision-making process that they can’t understand? How can we regulate it?

Guest host Libby Denkmann in for Larry Mantle

Guest:

Will Knight, senior editor for AI at MIT Technology Review; he wrote the article “The Dark Secret at the Heart of AI;” he tweets @willknight

This content is from Southern California Public Radio. View the original story at SCPR.org.


          Vincent Granville posted a blog post   
Vincent Granville posted a blog post

          Il deep learning per la protezione delle coltivazioni   

L’utilizzo delle biotecnologie in agricoltura è un tema spinoso e in questo senso non sono mancate e non mancano le critiche alle grandi corporation del settore.

Una nuova iniziativa di Monsanto potrebbe però portare vantaggi a tutti gli agricoltori: applicare l’intelligenza artificiale per scoprire velocemente nuove sostanze che proteggano le coltivazioni da parassiti e malattie.

Il progetto si concretizza attraverso una collaborazione con Atomwise, società che già usa il deep learning per varie applicazioni in campo biochimico.

Il punto di partenza del progetto è la constatazione che i normali processi per la creazione di nuove sostanze in agricoltura sono molto lenti.

Mediamente lo sviluppo di un nuovo prodotto per la protezione delle coltivazioni richiede undici anni e 250 milioni di dollari di investimenti prima di arrivare alla commercializzazione.

Il deep learning di AtomNet "testa" un possibile ligando (in viola)

L’idea è quella di applicare algoritmi di deep learning alla scoperta di nuove molecole e delle loro interazioni. A questo serve la tecnologia di Atomwise, che ha realizzato un algoritmo specifico per la chimica molecolare, battezzato AtomNet e basato su reti neurali.

AtomNet nel tempo ha “imparato” le varie possibili interazioni fra molecole e in particolare quando una certa molecola può essere il giusto ligando per una determinata proteina-bersaglio, ossia quando può legarsi con quest’ultima e generare un effetto biologico.

Avendo “assorbito” questo principio generale della biochimica a partire dalle scoperte già effettuate, AtomNet può assere di grande aiuto in particolare nella fase iniziale di studio di una nuova molecola.

Il suo ruolo sarà infatti prevedere quali molecole potrebbero avere un effetto positivo nella prevenzione di parassiti e malattie per le coltivazioni, consentendo di scartare a priori quelle che non appaiono adatte. Invece di effettuare questa selezione con prove dirette, è l’algoritmo a dare la direzione in cui conviene indirizzare la ricerca.

L'articolo Il deep learning per la protezione delle coltivazioni è un contenuto originale di 01net.


          Deep Learning and GPU Acceleration in Hadoop 3.0   

Recently Raj Verma (President & COO of Hortonworks) spoke to Jim McHugh from Nvidia at the DataWorks Summit keynote in San Jose (video). Jim began by talking about how parallel processing that is used in gaming is also essential to Deep Learning*. And the lifeblood of Deep Learning is data. With its insatiable desire for […]

The post Deep Learning and GPU Acceleration in Hadoop 3.0 appeared first on Hortonworks.


          AI Podcast: How Deep Learning Can Translate American Sign Language   

Deep learning has accelerated machine translation between spoken and written languages. But it’s lagged behind when it comes to sign language. Now Syed Ahmed, a computer engineering major at the Rochester Institute of Technology, is unleashing its power to translate between sign language and English. “You want to talk to your deaf or hard of […]

The post AI Podcast: How Deep Learning Can Translate American Sign Language appeared first on The Official NVIDIA Blog.


          #10: Deep Learning (Adaptive Computation and Machine Learning)   
Deep Learning
Deep Learning (Adaptive Computation and Machine Learning)
Ian Goodfellow , Yoshua Bengio , Aaron Courville
(3)

Neu kaufen: EUR 70,99 EUR 69,99
44 Angebote ab EUR 62,14

(In der Sachbücher-Bestseller-Liste finden Sie maßgebliche Informationen über die aktuelle Rangposition dieses Produkts.)
          TensorFlow: resoconto secondo incontro Meetup "Machine-Learning e Data Science" Roma (19 febbraio 2017)   

170219-tensorflow.jpg

Il 16 febbraio 2017 si è svolto a Roma – presso il Talent Garden di Cinecittà - il secondo incontro del Meetup "Machine Learning e Data Science" (web, fb, slideshare): l’incontro - organizzato insieme al Google Developer Group Roma Lazio Abruzzo   - è stato dedicato alla presentazione di TensorFlow,  la soluzione di Google per il deep learning nel machine learning.

Nel seguito una breve sintesi dell’incontro del 16 febbraio 2017.

Prima di iniziare:

•    Cos’è il Machine Learning? Intervista a Simone Scardapane sul Machine Learning Lab (1 dicembre 2016)
•    Cos’è TensorFlow? Andrea Bessi, “TensorFlow CodeLab”, Nov 16, 2016

Resoconto

Premessa

Il 15 Febbraio 2017 a Mountain View (USA) si è tenuto il “TensorFlow Dev Summit” , il primo evento ufficiale di Google dedicato a TensorFlow, la soluzione di deep learning rilasciato circa un anno fa e giunta adesso alla versione 1.0 “production ready”.
Il “TensorFlow Dev Summit” è stato aperto da un keynote di Jeff Dean (wiki, web, lk) - Google Senior Fellow - Rajat Monga (tw) - TensorFlow leader nel Google Brain team - e Megan Kacholia (lk) Engineering Director del TensorFlow/Brain team.

Per approfonsire il #TFDevSummit 2017:

L’incontro del Meetup "Machine-Learning” di Roma è stata un’occasione per rivedere insieme e commentare il video e fare anche una breve presentazione di TensorFlow.
Alla fine dell'evento c’è stato un piccolo rinfresco aperto a tutti gli appassionati di deep learning a Roma.

Simone Scardapane: “TensorFlow and Google, one year of exciting breakthroughs”

Simone (mup, web, fb, lk) ha aperto l’incontro con una breve presentazione sul deep learning e TensorFlow.
“TensorFlow” ha detto Simone “ ha reso accessibili a tutti le reti neurali che sono alla base del deep learning e dell’intelligenza artificiale. Prima di TensorFlow c’era una oggettiva difficoltà nel gestire e allenare reti neurali vaste e complesse”.
Le moderne architetture di deep learning usano infatti reti neurali molto complesse: ad esempio nelle applicazioni di data imaging  i modelli architetturali prevedono decine di milioni di parametri.

170219-reteneurale.jpg

(Rete neurale, immagine tratta da http://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html)

Uno dei grossi vantaggi di TensorFlow è che permette di definire una rete neurale in modo simbolico: lo strumento fornisce inoltre un compilatore efficiente che gestisce in automatico il processo di back-propagation.
TensorFlow può essere utilizzato inoltre con una interfaccia semplificata come Keras arrivando quasi ad una sorta di programmazione dichiarativa.
La prima release di TensorFlow – ha ricordato Simone - è stata rilasciata nel novembre 2015 con licenza aperta Apache 2.0  (cos’è?). Il 15 febbraio 2017 – durante il TFDevSummit - è stata annunciata la versione 1.0 di TensorFlow la prima “production ready”.
La disponibilità di un ambiente deep learning aperto e “user-friendly” ha permesso lo sviluppo di una vasta comunità di esperti, ricercatori e semplici appassionati e il rilascio applicazioni software di grande impatto. Simone ha mostrato alcuni esempi.

1) Neural image captioning: software in grado di riconoscere e descrivere o sottotitolare immagini.

170216-tensorflow-s2.jpg
 

170216-ragazzo-aquilone.jpg

170216-tren-b-n.jpg

2) Google Neural Machine Translation (GNMT)  che ha permesso il rifacimento di “Google translator” grazie al deep learning: invece di tradurre parola per parola ora è possibile analizza il testo nella sua interezza cogliendo significato e il contesto con un livello di accuratezza ormai vicino alla traduzione umana.

nmt-model-fast.jpg

170216-neural-translation.jpg
170216-neural-translation2.jpg

3) Generative Adversarial Networks (GANS) sistemi capaci di generare nuovi dati grazie a un emenorme “training set” e che lavorano con una coppia di reti neurali: la prima produce nuovi dati la seconda controlla la “bontà” del risultato; questi sistemi sono già stati usati per generare immagini artificiali, scenari per video-game, migliorare immagini e riprese video di scarsa qualità.

170216-generative-image

4) Alphago: il deep learning è anche alla base dei recenti spettacolari successi dell’IA nel campo dei giochi da tavolo come la vittoria di Alphago di Google  contro il campione del mondo di GO.

170216-alphago.jpg

5) WaveNet - a generative model for raw audio - capace di generare discorsi che imitano una voce umana con molta più “naturalezza” rispetto ai migliori sistemi di Text-to-Speech oggi esistenti. WaveNet è già stato utilizzato anche per creare musica artificiale.

Simone ha concluso il suo intervento ricordando che di deep learning e ML si parlerà anche in un track specifico alla Data Driven Innovation Roma 2017   che si terrà presso la 3° università di Roma il 24 e 25 febbraio 2017.

Sintesi del keynote di Jeff Dean, Rajat Monga e Megan Kacholia su TensorFlow

Il keynote di apertura del TF DevSummit 2017 condotto da Jeff Dean, Rajat Monga e Megan Kacholia  ha trattato:

  • origini e storia di TensorFlow
  • i progressi da quanto è stata rilasciata la prima versione opensource di TensorFlow
  • la crescente comunità open-source di TensorFlow
  • performance e scalabilityà di TensorFlow
  • applicazioni di TensorFlow
  • exciting announcements!

Jeff Dean

jeff dean.jpg

Jeff ha detto che l’obiettivo di Google con TensorFlow è costruire una “machine learning platform” utilizzabile da chiunque.
TensorFlow è stato rilasciato circa un anno fa ma le attività di Google nel campo del machine learning e deep learning sono iniziati 5 anni fa.
Il primo sistema realizzato – nel 2012 – è stato DistBelief un sistema proprietario di reti neurali adatto ad un ambiente produzione come quello di Google basato su sistemi distribuiti (vedi “Large Scale Distributed Deep Networks” in pdf). DistBelief è stato utilizzato in molti prodotti Google di successo come Google Search, Google Voice Search, advertising, Google Photos, Google Maps, Google Street View, Google Translate, YouTube.
Ma DistBelief aveva molti limiti: “volevamo un sistema molto più flessibile e general purpose” ha detto Jeff “che fosse open source e che venisse adottato e sviluppato da una vasta comunità in tutto il mondo e orientato non solo alla produzione ma anche alla ricerca. Così nel 2016 abbiamo annunciato TensorFlow, una soluzione capace di girare in molteplici ambienti compreso IOS, Android, Raspberry PI, capace di girare su CPU, GPU e TPU, ma anche sul Cloud di Goole ed essere interfacciata da linguaggi come Python, C++, GO, Hasknell, R”.

170216-tensorflow-keynote1.jpg
TensorFlow ha anche sofisticati tool per la visualizzazione dei dati e questo ha facilitato lo sviluppo di una vasta comunità open source intorno a TensorFlow.

170216-tensorflow-keynote2.jpg

Rajat Monga

rajatmonga2.jpg

Rajat Monga ha ufficialmente annunciato il rilascio della versione 1.0 di TensorFlow illustrandone le nuove caratteristiche.

170216-tensorflow-keynote3.jpg

170216-tensorflow-keynote4.jpg

Rajat ha poi illustrato le nuove API di TensorFlow

170218-tf-model.jpg

TensorFlow 1.0 supporta IBM's PowerAI distribution, Movidius Myriad 2 accelerator, Qualcomm SnapDragon Hexagon DSP. Rajat ha annunciato anche la disponibilità di XLA an experimental TensorFlow compiler  specializzato nella compilazione just-in-time e nei calcoli algebrici.

170218-tf-xla.jpg

Megan Kacholia

megankacholia2.jpg

Megan Kacholia ha approfondito il tema delle performancedi TensorFlow 1.0.

170216-tensorflow-keynote7.jpg

In ambiente di produzione si possono utilizzare  molteplici architetture: server farm, CPU-GPU-TPU, server a bassa latenza (come nel mobile) perché TensorFlow 1.0 è ottimizzato per garantire ottime performance in tutti gli ambienti.

170218-tf-performance1.jpg

Megan ha poi illustrato esempi dell’uso di TensorFlow in ricerche d'avanguardia - cutting-edge research – e applicazioni pratiche in ambiente mobile.

170218-tf-research2.jpg

170218-tf-research1.jpg

Conclusione del keynote

In conclusione del Keynote è di nuovo intervenuto Jeff per ringraziare tutti coloro che contribuiscono alla comunità di TensorFlow pur non facendo parte di Google.
“Dalla comunità” ha detto Jeff “arrivano suggerimenti, richieste e anche soluzioni brillanti a cui in Google non avevamo ancora pensato” citando il caso di un agricoltore giapponese che ha sviluppato un’applicazione con TensorFlow su Raspberry PI per riconoscere i cetrioli storti e scartarli nella fase di impacchettamento.
Nel campo della medicina – ha ricordato Jeff – TensorFlow è stato usato per la diagnostica della retinopatia diabetica (qui una sintesi) e all’università di Stanford per la cura del cancro della pelle .

Contatti

•    Meetup “Machine-Learning e Data Science” di Roma: - sito web e pagina Facebook

Approfondimenti

Video

Ulteriori informazioni su TensorFlow

Leggi anche

AG-Vocabolario: 

          Simone Scardapane: Machine Learning Lab (1 dicembre 2016)   

161022-ml2.jpg

Il 22 ottobre 2016 si è svolta la “Google DevFest”, organizzata dal Google Developer Group Roma Lazio Abruzzo presso l’Engineering Department dell’Università degli Studi di Roma Tre.
Uno dei seminari della “Google DevFest” è stato dedicato al “Machine Learning” ed è stato condotto da Simone Scardapane - della Università “La Sapienza” di Roma - che abbiamo intervistato.

161022-simone-scardapane.jpg

(Simone Scardapane)
 
Agatino Grillo (AG): Buongiorno Simone e grazie per la collaborazione. Ti vuoi presentare?

Simone Scardapane (SS): Sono un assegnista di ricerca presso l’Università “la Sapienza” di Roma, e le mie attività di ricerca si concentrano in prevalenza su vari aspetti del Machine Learning. Sono membro del GDG da diversi anni, ed in questo tempo abbiamo organizzato diverse presentazioni, come quella dell’ultima DevFest, per cercare di introdurre un pubblico più vasto alle tematiche del Machine Learning, che (credo) saranno sempre più importanti per sviluppatori e non negli anni a venire.
Prima di prendere il dottorato, mi sono laureato in Ingegneria Informatica a Roma Tre, ed in seguito ho conseguito un Master in Intelligenza Artificiale e Robotica presso La Sapienza.

AG: Cos’è il “Machine Learning” (ML)?

SS: Si tratta di un campo molto vasto che, in sostanza, si pone come obiettivo di realizzare algoritmi che si adattino in maniera automatica a partire dai dati che ricevono, al fine di realizzare previsioni o, più in generale, comportamenti intelligenti di vario tipo.
Un esempio classico è una banca che, al momento di erogare un prestito, potrebbe utilizzare un algoritmo di ML per fare previsioni sulla solvibilità dei propri clienti basandosi sullo storico dei prestiti già erogati fino a quel momento.
Un altro campo di utilizzo classico del ML riguarda la “raccomandazione” di prodotti o servizi simili sulla base delle scelte fatte dai consumatori già registrati nelle basi dati, che ha moltissima rilevanza oggi nei servizi di e-commerce.

AG: Come è nato il ML e perché oggi ha acquistato tanta importanza?

SS: Il Machine Learning, che possiamo considerare una branca dell’Intelligenza Artificiale, è una disciplina che sotto varie forme esiste da molti decenni: il primo embrione di quelle che oggi sono le reti neurali nasce negli anni quaranta, mentre il termine “machine learning” viene introdotto circa nel 1959. È un campo complesso che ha guadagnato dal contributo di tantissime discipline, tra cui l’informatica, la matematica, le scienze cognitive e molte altre.
Negli anni ha attraversato varie fasi, direi che oggi ha raggiunto una fase di maturità grazie ad (almeno) 3 fattori concomitanti:

  1. sono disponibili grandi basi di dati che possono essere usate per addestrare gli algoritmi di ML
  2. la potenza computazionale necessaria è disponibile a basso costo (si pensi a piattaforme di cluster computing come Spark)
  3. si sono imposte delle librerie standard che permettono di realizzare gli algoritmi in modo veloce all’interno di linguaggi e programmi estremamente interattivi.

Esiste una classificazione storica degli algoritmi di ML, che possiamo dividere in:

  1. apprendimento supervisionato: si basa sull’utilizzo di informazioni “etichettate” in qualche modo – come nell’esempio della banca, dove ciascun cliente è etichettato in funzione del suo livello di solvibilità – per predire nuovi risultati
  2. apprendimento non supervisionato: in questo caso, l’obiettivo è gestire informazioni secondo strutture non note a priori; ad esempio facendo clustering di clienti per offerte commerciali mirate
  3. apprendimento con rinforzo (reinforcement learning): è l’area più avanzata e probabilmente meno standardizzata, in questo caso i dati servono ad apprendere azioni ottimali in ambienti non strutturati – si pensi ad esempio ad un programma che impara a giocare a scacchi.

AG: Cosa serve per fare ML?

SS: Ovviamente dipende dalla quantità di dati che si vuole analizzare e dagli obiettivi che ci si prefigge. A livello implementativo, se i dati non sono eccessivi si può facilmente sperimentare su un singolo computer, basta la conoscenza di almeno un linguaggio di programmazione e delle librerie di ML e di analisi di dati disponibili. A livello teorico conta molto quanto si vuole approfondire l’argomento. Alcuni concetti di fondo si imparano facilmente, ma per andare oltre le descrizioni informali dei metodi e degli algoritmi è richiesta (almeno) una conoscenza di base di algebra lineare e di ottimizzazione.

161022-ml3.jpg

AG: in cosa è consistito il tuo ML lab?

SS: Nel lab che ho condotto durante la Google Fest abbiamo usato scikit-learn (sklearn) - una libreria open source di apprendimento automatico in Python. L’idea era quella di mostrare che, con il livello di maturità raggiunto dalle librerie software di oggi, si può arrivare a dei primi risultati in maniera rapida e valutando tutto il processo ad alto livello. Ovviamente questo non toglie la necessità di capire gli algoritmi, ma credo che questo genere di esperienza “hands-on” aiuti ad invogliare le persone ad avvicinarsi a questo campo.

Nel dettaglio, sklearn contiene algoritmi ML di classificazione, regressione, clustering, e diverse funzioni di supporto per la valutazione e l’ottimizzazione dei modelli. Soprattutto, ha un’interfaccia molto semplice e consistente per il suo utilizzo. Per chi volesse replicare quanto fatto, consiglio di scaricare e installare l’ambiente Pyhton integrato Anaconda, un full-stack che contiene tutto quello che serve, incluso un IDE specializzato per il calcolo scientifico.

Nel lab abbiamo visto e commentato insieme tre esempi di algoritmi ML:

  • Music classification: classificare secondo il genere musicale un insieme di canzoni tratte da un dataset predefinito.
  • Image segmentation effettuata in maniera non convenzionale grazie a un algoritmo di clustering.
  • Joke recommendation: come consigliare barzellette usando il dataset di prova 1_1 della Jester collection.

Tutto il codice zippato e le slides relative sono disponibili sulla mia pagina web.

AG: Che sviluppi futuri ti aspetti per il ML?

SS: Negli ultimi due/tre anni abbiamo visto una esplosione di applicazioni grazie alla diffusione del “deep learning”, una nuova famiglia di algoritmi che permettono di estrarre rappresentazioni gerarchiche di dati complessi (es., immagini). Sicuramente questo trend continuerà, ad esempio con nuovi filoni di applicazioni in ambito biomedico e di analisi di dati scientifici (per esempio nel campo della fisica delle particelle).
Più in generale, tutti i risultati ottenuti finora sono solo una piccola parte di quello che servirebbe per avere degli algoritmi che “imparano” nel senso più generale del termine. L’accelerazione del ML e del deep learning sicuramente porterà ad una simile accelerazione in questi campi più di frontiera, soprattutto nel reinforcement learning, nell’analisi di dati complessi, nel trasferimento di conoscenza fra problemi diversi, e così via.

AG: Cosa consigli a chi voglia intraprendere questo tipo di studi a livello universitario?

SS: Come già detto, il ML è un campo molto variegato, a cui ci si può affacciare da diverse discipline, incluse informatica, ingegneria, matematica e così via. Il mio consiglio per chi volesse specializzarsi in questa disciplina è di controllare bene quale sia l’opzione migliore all’interno della propria università – in alcuni casi potrebbe essere preferibile un percorso all’interno di Informatica o Ingegneria Informatica, in altri i corsi potrebbero essere erogati all’interno dell’area di matematica applicata o statistica. È difficile dare un consiglio che valga in generale.

AG: Cosa consigli invece a chi voglia approfondire l’argomento?

SS: Oggi il modo più comune di approcciarsi al ML è quello di frequentare uno dei tanti corsi online disponibili su piattaforme MOOC, come quelli di Coursera o Udacity. Si tratta di ottimi punti di partenza che permettono un buon ripasso dei fondamenti ed una certa visione di insieme. A quel punto è possibile seguire materiale più specializzato a seconda dei propri interessi. Il mio consiglio in questo caso è di provare da subito ad applicare le tecniche che si imparano, ad esempio all’interno di piattaforme come Kaggle che mettono a disposizione diversi dataset su cui confrontarsi. Come in tutti i settori, l’esperienza pratica non è mai troppo poca, ed è l’unica che permette di prendere realtà familiarità con una vasta schiera di tecniche ed algoritmi.

Link

Google Developer Group Lazio e Abruzzo

Simone Scardapane

Strumenti e tool

 

AG-Vocabolario: 

          #1: Deep Learning   
Deep Learning
Deep Learning
Ian Goodfellow , Yoshua Bengio , Aaron Courville
(5)

Buy new: CDN$ 104.31 CDN$ 102.96
21 used & new from CDN$ 82.00

(Visit the Bestsellers in Programming list for authoritative information on this product's current rank.)
          What is Deep Learning ??   
This article basically just a translation version of the article of deep learning previously in bahasa Indonesia. This time I want to share about what is deep learning, at least as far as I have learned untul this day (when this…
          Assessment of PD severity in gas-insulated switchgear with an SSAE   
Scientific partial discharge (PD) severity evaluation is highly important to the safe operation of gas-insulated switchgear. However, describing PD severity with only a few statistical features such as discharge time and discharge amplitude is unreliable. Hence, a deep-learning neural network model called stacked sparse auto-encoder (SSAE) is proposed to realise feature extraction from the middle layer with a small number of nodes. The output feature that is almost similar to the input PD information is produced in the model. The features extracted from PD data are then fed into a soft-max classifier to be classified into one of four defined PD severity states. In addition, unsupervised greedy layer-wise pre-training and supervised fine-tuning are utilised to train the SSAE network during evaluation. Results of testing and simulation analysis show that the features extracted by the SSAE model effectively characterise PD severity. The performance of the SSAE model, which possesses an average assessment accuracy of up to 92.2%, is better than that of the support vector machine algorithm based on statistical features. According to the tested number of SSAE layers and features and the training sample size, the SSAE model possesses good expansibility and can be useful in practical applications.
          Playing next door to Alice: Popgun reveals its music AI   

PopgunMusic composed by artificial intelligence (AI) rather than humans is a controversial topic in 2017, for two reasons.

First: disbelief in some quarters that an AI will ever be able to create music as well as a human can. And second: fear that if it can, that’s the next tech trend sucking income away from working musicians.

Australian startup Popgun is hoping that its deep-learning based technology can prove the first view wrong, while playing a more positive role for human musicians than the second.

The post Playing next door to Alice: Popgun reveals its music AI appeared first on Music Ally.


          Senior Cloud Security Architect - NVIDIA - Santa Clara, CA   
Do you visualize your future at NVIDIA? Machine Learning, Deep-Learning, Artificial Intelligence – particularly in Regression or Forecasting,....
From NVIDIA - Sat, 20 May 2017 16:05:22 GMT - View all Santa Clara, CA jobs
          Nuit Blanche in Review (June 2017)   

Since the last Nuit Blanche in Review (May 2017) we've had three implementations related to Deep Neural Networks, a few in-depth post ranging from training nets to compressive sensing,  a dataset, two Paris Machine Learning meetups, one meeting announcement, several videos of talks and four job announcements. Enjoy !

Implementations

In depth

Book
Dataset

Paris Machine Learning meetup

Meeting
slides

Videos

Job:






Join the CompressiveSensing subreddit or the Google+ Community or the Facebook page and post there !
Liked this entry ? subscribe to Nuit Blanche's feed, there's more where that came from. You can also subscribe to Nuit Blanche by Email, explore the Big Picture in Compressive Sensing or the Matrix Factorization Jungle and join the conversations on compressive sensing, advanced matrix factorization and calibration issues on Linkedin.

          Hierarchical Attention Network for Document Classification--tensorflow实现篇   

上周我们介绍了Hierarchical Attention Network for Document Classification这篇论文的模型架构,这周抽空用tensorflow实现了一下,接下来主要从代码的角度介绍如何实现用于文本分类的HAN模型。

数据集

首先介绍一下数据集,这篇论文中使用了几个比较大的数据集,包括IMDB电影评分,yelp餐馆评价等等。选定使用yelp2013之后,一开始找数据集的时候完全处于懵逼状态,所有相关的论文和资料里面出现的数据集下载链接都指向YELP官网,但是官网上怎么都找不到相关数据的下载,然后就各种搜感觉都搜不到==然后就好不容易在github上面找到了,MDZZ,我这都是在写什么,绝对不是在凑字数,单纯的吐槽数据不好找而已。链接如下:
https://github.com/rekiksab/Yelp/tree/master/yelp_challenge/yelp_phoenix_academic_dataset
这里面好像不止一个数据集,还有user,business等其他几个数据集,不过在这里用不到罢了。先来看一下数据集的格式,如下,每一行是一个评论的文本,是json格式保存的,主要有vote, user_id, review_id, stars, data, text, type, business_id几项,针对本任务,只需要使用stars评分和text评论内容即可。这里我选择先将相关的数据保存下来作为数据集。代码如下所示:

{"votes": {"funny": 0, "useful": 5, "cool": 2}, "user_id": "rLtl8ZkDX5vH5nAx9C3q5Q", "review_id": "fWKvX83p0-ka4JS3dc6E5A", "stars": 5, "date": "2011-01-26", "text": "My wife took me here on my birthday for breakfast and it was excellent.  The weather was perfect which made sitting outside overlooking their grounds an absolute pleasure.  Our waitress was excellent and our food arrived quickly on the semi-busy Saturday morning.  It looked like the place fills up pretty quickly so the earlier you get here the better.\n\nDo yourself a favor and get their Bloody Mary.  It was phenomenal and simply the best I've ever had.  I'm pretty sure they only use ingredients from their garden and blend them fresh when you order it.  It was amazing.\n\nWhile EVERYTHING on the menu looks excellent, I had the white truffle scrambled eggs vegetable skillet and it was tasty and delicious.  It came with 2 pieces of their griddled bread with was amazing and it absolutely made the meal complete.  It was the best \"toast\" I've ever had.\n\nAnyway, I can't wait to go back!", "type": "review", "business_id": "9yKzy9PApeiPPOUJEtnvkg"}

数据集的预处理操作,这里我做了一定的简化,将每条评论数据都转化为30*30的矩阵,其实可以不用这么规划,只需要将大于30的截断即可,小鱼30的不需要补全操作,只是后续需要给每个batch选定最大长度,然后获取每个样本大小,这部分我还没有太搞清楚,等之后有时间再看一看,把这个功能加上就行了。先这样凑合用==

#coding=utf-8
import json
import pickle
import nltk
from nltk.tokenize import WordPunctTokenizer
from collections import defaultdict

#使用nltk分词分句器
sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
word_tokenizer = WordPunctTokenizer()

#记录每个单词及其出现的频率
word_freq = defaultdict(int)

# 读取数据集,并进行分词,统计每个单词出现次数,保存在word freq中
with open('yelp_academic_dataset_review.json', 'rb') as f:
    for line in f:
        review = json.loads(line)
        words = word_tokenizer.tokenize(review['text'])
        for word in words:
            word_freq[word] += 1

    print "load finished"

# 将词频表保存下来
with open('word_freq.pickle', 'wb') as g:
    pickle.dump(word_freq, g)
    print len(word_freq)#159654
    print "word_freq save finished"

num_classes = 5
# 将词频排序,并去掉出现次数最小的3个
sort_words = list(sorted(word_freq.items(), key=lambda x:-x[1]))
print sort_words[:10], sort_words[-10:]

#构建vocablary,并将出现次数小于5的单词全部去除,视为UNKNOW
vocab = {}
i = 1
vocab['UNKNOW_TOKEN'] = 0
for word, freq in word_freq.items():
    if freq > 5:
        vocab[word] = i
        i += 1
print i
UNKNOWN = 0

data_x = []
data_y = []
max_sent_in_doc = 30
max_word_in_sent = 30

#将所有的评论文件都转化为30*30的索引矩阵,也就是每篇都有30个句子,每个句子有30个单词
# 不够的补零,多余的删除,并保存到最终的数据集文件之中
with open('yelp_academic_dataset_review.json', 'rb') as f:
    for line in f:
        doc = []
        review = json.loads(line)
        sents = sent_tokenizer.tokenize(review['text'])
        for i, sent in enumerate(sents):
            if i < max_sent_in_doc:
                word_to_index = []
                for j, word in enumerate(word_tokenizer.tokenize(sent)):
                    if j < max_word_in_sent:
                            word_to_index.append(vocab.get(word, UNKNOWN))
                doc.append(word_to_index)

        label = int(review['stars'])
        labels = [0] * num_classes
        labels[label-1] = 1
        data_y.append(labels)
        data_x.append(doc)
    pickle.dump((data_x, data_y), open('yelp_data', 'wb'))
    print len(data_x) #229907
    # length = len(data_x)
    # train_x, dev_x = data_x[:int(length*0.9)], data_x[int(length*0.9)+1 :]
    # train_y, dev_y = data_y[:int(length*0.9)], data_y[int(length*0.9)+1 :]

在将数据预处理之后,我们就得到了一共229907篇文档,每篇都是30*30 的单词索引矩阵,这样在后续进行读取的时候直接根据嵌入矩阵E就可以将单词转化为词向量了。也就省去了很多麻烦。这样,我们还需要一个数据的读取的函数,将保存好的数据载入内存,其实很简单,就是一个pickle读取函数而已,然后将数据集按照9:1的比例分成训练集和测试集。其实这里我觉得9:1会使验证集样本过多(20000个),但是论文中就是这么操作的==暂且不管这个小细节,就按论文里面的设置做吧。代码如下所示:

def read_dataset():
    with open('yelp_data', 'rb') as f:
        data_x, data_y = pickle.load(f)
        length = len(data_x)
        train_x, dev_x = data_x[:int(length*0.9)], data_x[int(length*0.9)+1 :]
        train_y, dev_y = data_y[:int(length*0.9)], data_y[int(length*0.9)+1 :]
        return train_x, train_y, dev_x, dev_y

有了这个函数,我们就可以在训练时一键读入数据集了。接下来我们看一下模型架构的实现部分。

模型实现

按照上篇博客中关于模型架构的介绍,结合下面两张图进行理解,我们应该很容易的得出模型的框架主要分为句子层面,文档层面两部分,然后每个内部有包含encoder和attention两部分。
这里写图片描述
这里写图片描述
代码部分如下所示,主要是用tf.nn.bidirectional_dynamic_rnn()函数实现双向GRU的构造,然后Attention层就是一个MLP+softmax机制,yehe你容易理解。

#coding=utf8

import tensorflow as tf
from tensorflow.contrib import rnn
from tensorflow.contrib import layers

def length(sequences):
#返回一个序列中每个元素的长度
    used = tf.sign(tf.reduce_max(tf.abs(sequences), reduction_indices=2))
    seq_len = tf.reduce_sum(used, reduction_indices=1)
    return tf.cast(seq_len, tf.int32)

class HAN():

    def __init__(self, vocab_size, num_classes, embedding_size=200, hidden_size=50):

        self.vocab_size = vocab_size
        self.num_classes = num_classes
        self.embedding_size = embedding_size
        self.hidden_size = hidden_size

        with tf.name_scope('placeholder'):
            self.max_sentence_num = tf.placeholder(tf.int32, name='max_sentence_num')
            self.max_sentence_length = tf.placeholder(tf.int32, name='max_sentence_length')
            self.batch_size = tf.placeholder(tf.int32, name='batch_size')
            #x的shape为[batch_size, 句子数, 句子长度(单词个数)],但是每个样本的数据都不一样,,所以这里指定为空
            #y的shape为[batch_size, num_classes]
            self.input_x = tf.placeholder(tf.int32, [None, None, None], name='input_x')
            self.input_y = tf.placeholder(tf.float32, [None, num_classes], name='input_y')

        #构建模型
        word_embedded = self.word2vec()
        sent_vec = self.sent2vec(word_embedded)
        doc_vec = self.doc2vec(sent_vec)
        out = self.classifer(doc_vec)

        self.out = out


    def word2vec(self):
        #嵌入层
        with tf.name_scope("embedding"):
            embedding_mat = tf.Variable(tf.truncated_normal((self.vocab_size, self.embedding_size)))
            #shape为[batch_size, sent_in_doc, word_in_sent, embedding_size]
            word_embedded = tf.nn.embedding_lookup(embedding_mat, self.input_x)
        return word_embedded

    def sent2vec(self, word_embedded):
        with tf.name_scope("sent2vec"):
            #GRU的输入tensor是[batch_size, max_time, ...].在构造句子向量时max_time应该是每个句子的长度,所以这里将
            #batch_size * sent_in_doc当做是batch_size.这样一来,每个GRU的cell处理的都是一个单词的词向量
            #并最终将一句话中的所有单词的词向量融合(Attention)在一起形成句子向量

            #shape为[batch_size*sent_in_doc, word_in_sent, embedding_size]
            word_embedded = tf.reshape(word_embedded, [-1, self.max_sentence_length, self.embedding_size])
            #shape为[batch_size*sent_in_doce, word_in_sent, hidden_size*2]
            word_encoded = self.BidirectionalGRUEncoder(word_embedded, name='word_encoder')
            #shape为[batch_size*sent_in_doc, hidden_size*2]
            sent_vec = self.AttentionLayer(word_encoded, name='word_attention')
            return sent_vec

    def doc2vec(self, sent_vec):
        #原理与sent2vec一样,根据文档中所有句子的向量构成一个文档向量
        with tf.name_scope("doc2vec"):
            sent_vec = tf.reshape(sent_vec, [-1, self.max_sentence_num, self.hidden_size*2])
            #shape为[batch_size, sent_in_doc, hidden_size*2]
            doc_encoded = self.BidirectionalGRUEncoder(sent_vec, name='sent_encoder')
            #shape为[batch_szie, hidden_szie*2]
            doc_vec = self.AttentionLayer(doc_encoded, name='sent_attention')
            return doc_vec

    def classifer(self, doc_vec):
        #最终的输出层,是一个全连接层
        with tf.name_scope('doc_classification'):
            out = layers.fully_connected(inputs=doc_vec, num_outputs=self.num_classes, activation_fn=None)
            return out

    def BidirectionalGRUEncoder(self, inputs, name):
        #双向GRU的编码层,将一句话中的所有单词或者一个文档中的所有句子向量进行编码得到一个 2×hidden_size的输出向量,然后在经过Attention层,将所有的单词或句子的输出向量加权得到一个最终的句子/文档向量。
        #输入inputs的shape是[batch_size, max_time, voc_size]
        with tf.variable_scope(name):
            GRU_cell_fw = rnn.GRUCell(self.hidden_size)
            GRU_cell_bw = rnn.GRUCell(self.hidden_size)
            #fw_outputs和bw_outputs的size都是[batch_size, max_time, hidden_size]
            ((fw_outputs, bw_outputs), (_, _)) = tf.nn.bidirectional_dynamic_rnn(cell_fw=GRU_cell_fw,
                                                                                 cell_bw=GRU_cell_bw,
                                                                                 inputs=inputs,
                                                                                 sequence_length=length(inputs),
                                                                                 dtype=tf.float32)
            #outputs的size是[batch_size, max_time, hidden_size*2]
            outputs = tf.concat((fw_outputs, bw_outputs), 2)
            return outputs

    def AttentionLayer(self, inputs, name):
        #inputs是GRU的输出,size是[batch_size, max_time, encoder_size(hidden_size * 2)]
        with tf.variable_scope(name):
            # u_context是上下文的重要性向量,用于区分不同单词/句子对于句子/文档的重要程度,
            # 因为使用双向GRU,所以其长度为2×hidden_szie
            u_context = tf.Variable(tf.truncated_normal([self.hidden_size * 2]), name='u_context')
            #使用一个全连接层编码GRU的输出的到期隐层表示,输出u的size是[batch_size, max_time, hidden_size * 2]
            h = layers.fully_connected(inputs, self.hidden_size * 2, activation_fn=tf.nn.tanh)
            #shape为[batch_size, max_time, 1]
            alpha = tf.nn.softmax(tf.reduce_sum(tf.multiply(h, u_context), axis=2, keep_dims=True), dim=1)
            #reduce_sum之前shape为[batch_szie, max_time, hidden_szie*2],之后shape为[batch_size, hidden_size*2]
            atten_output = tf.reduce_sum(tf.multiply(inputs, alpha), axis=1)
            return atten_output

以上就是主要的模型架构部分,其实思路也是很简单的,主要目的是熟悉一下其中一些操作的使用方法。接下来就是模型的训练部分了。

模型训练

其实这部分里的数据读入部分我一开始打算使用上次博客中提到的TFRecords来做,但是实际用的时候发现貌似还有点不熟悉,尝试了好几次都有点小错误,虽然之前已经把别人的代码都看明白了,但是真正到自己写的时候还是存在一定的难度,还要抽空在学习学习==所以在最后还是回到了以前的老方法,分批次读入,恩,最起码简单易懂23333.。。。

由于这部分大都是重复性的代码,所以不再进行详细赘述,不懂的可以去看看我前面几篇博客里面关于模型训练部分代码的介绍。

这里重点说一下,关于梯度训练部分的梯度截断,由于RNN模型在训练过程中往往会出现梯度爆炸和梯度弥散等现象,所以在训练RNN模型时,往往会使用梯度截断的技术来防止梯度过大而引起无法正确求到的现象。然后就基本上都是使用的dennizy大神的CNN代码中的程序了。

#coding=utf-8
import tensorflow as tf
import model
import time
import os
from load_data import read_dataset, batch_iter


# Data loading params
tf.flags.DEFINE_string("data_dir", "data/data.dat", "data directory")
tf.flags.DEFINE_integer("vocab_size", 46960, "vocabulary size")
tf.flags.DEFINE_integer("num_classes", 5, "number of classes")
tf.flags.DEFINE_integer("embedding_size", 200, "Dimensionality of character embedding (default: 200)")
tf.flags.DEFINE_integer("hidden_size", 50, "Dimensionality of GRU hidden layer (default: 50)")
tf.flags.DEFINE_integer("batch_size", 32, "Batch Size (default: 64)")
tf.flags.DEFINE_integer("num_epochs", 10, "Number of training epochs (default: 50)")
tf.flags.DEFINE_integer("checkpoint_every", 100, "Save model after this many steps (default: 100)")
tf.flags.DEFINE_integer("num_checkpoints", 5, "Number of checkpoints to store (default: 5)")
tf.flags.DEFINE_integer("evaluate_every", 100, "evaluate every this many batches")
tf.flags.DEFINE_float("learning_rate", 0.01, "learning rate")
tf.flags.DEFINE_float("grad_clip", 5, "grad clip to prevent gradient explode")

FLAGS = tf.flags.FLAGS

train_x, train_y, dev_x, dev_y = read_dataset()
print "data load finished"

with tf.Session() as sess:
    han = model.HAN(vocab_size=FLAGS.vocab_size,
                    num_classes=FLAGS.num_classes,
                    embedding_size=FLAGS.embedding_size,
                    hidden_size=FLAGS.hidden_size)

    with tf.name_scope('loss'):
        loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=han.input_y,
                                                                      logits=han.out,
                                                                      name='loss'))
    with tf.name_scope('accuracy'):
        predict = tf.argmax(han.out, axis=1, name='predict')
        label = tf.argmax(han.input_y, axis=1, name='label')
        acc = tf.reduce_mean(tf.cast(tf.equal(predict, label), tf.float32))

    timestamp = str(int(time.time()))
    out_dir = os.path.abspath(os.path.join(os.path.curdir, "runs", timestamp))
    print("Writing to {}\n".format(out_dir))

    global_step = tf.Variable(0, trainable=False)
    optimizer = tf.train.AdamOptimizer(FLAGS.learning_rate)
    # RNN中常用的梯度截断,防止出现梯度过大难以求导的现象
    tvars = tf.trainable_variables()
    grads, _ = tf.clip_by_global_norm(tf.gradients(loss, tvars), FLAGS.grad_clip)
    grads_and_vars = tuple(zip(grads, tvars))
    train_op = optimizer.apply_gradients(grads_and_vars, global_step=global_step)

    # Keep track of gradient values and sparsity (optional)
    grad_summaries = []
    for g, v in grads_and_vars:
        if g is not None:
            grad_hist_summary = tf.summary.histogram("{}/grad/hist".format(v.name), g)
            grad_summaries.append(grad_hist_summary)

    grad_summaries_merged = tf.summary.merge(grad_summaries)

    loss_summary = tf.summary.scalar('loss', loss)
    acc_summary = tf.summary.scalar('accuracy', acc)


    train_summary_op = tf.summary.merge([loss_summary, acc_summary, grad_summaries_merged])
    train_summary_dir = os.path.join(out_dir, "summaries", "train")
    train_summary_writer = tf.summary.FileWriter(train_summary_dir, sess.graph)

    dev_summary_op = tf.summary.merge([loss_summary, acc_summary])
    dev_summary_dir = os.path.join(out_dir, "summaries", "dev")
    dev_summary_writer = tf.summary.FileWriter(dev_summary_dir, sess.graph)

    checkpoint_dir = os.path.abspath(os.path.join(out_dir, "checkpoints"))
    checkpoint_prefix = os.path.join(checkpoint_dir, "model")
    if not os.path.exists(checkpoint_dir):
        os.makedirs(checkpoint_dir)
    saver = tf.train.Saver(tf.global_variables(), max_to_keep=FLAGS.num_checkpoints)

    sess.run(tf.global_variables_initializer())

    def train_step(x_batch, y_batch):
        feed_dict = {
            han.input_x: x_batch,
            han.input_y: y_batch,
            han.max_sentence_num: 30,
            han.max_sentence_length: 30,
            han.batch_size: 64
        }
        _, step, summaries, cost, accuracy = sess.run([train_op, global_step, train_summary_op, loss, acc], feed_dict)

        time_str = str(int(time.time()))
        print("{}: step {}, loss {:g}, acc {:g}".format(time_str, step, cost, accuracy))
        train_summary_writer.add_summary(summaries, step)

        return step

    def dev_step(x_batch, y_batch, writer=None):
        feed_dict = {
            han.input_x: x_batch,
            han.input_y: y_batch,
            han.max_sentence_num: 30,
            han.max_sentence_length: 30,
            han.batch_size: 64
        }
        step, summaries, cost, accuracy = sess.run([global_step, dev_summary_op, loss, acc], feed_dict)
        time_str = str(int(time.time()))
        print("++++++++++++++++++dev++++++++++++++{}: step {}, loss {:g}, acc {:g}".format(time_str, step, cost, accuracy))
        if writer:
            writer.add_summary(summaries, step)

    for epoch in range(FLAGS.num_epochs):
        print('current epoch %s' % (epoch + 1))
        for i in range(0, 200000, FLAGS.batch_size):
            x = train_x[i:i + FLAGS.batch_size]
            y = train_y[i:i + FLAGS.batch_size]
            step = train_step(x, y)
            if step % FLAGS.evaluate_every == 0:
                dev_step(dev_x, dev_y, dev_summary_writer)

当模型训练好之后,我们就可以去tensorboard上面查看训练结果如何了。

训练结果

训练起来不算慢,但是也称不上快,在实验室服务器上做测试,64G内存,基本上2秒可以跑3个batch。然后我昨天晚上跑了之后就回宿舍了,回来之后发现忘了把dev的数据写到summary里面,而且现在每个epoch里面没加shuffle,也没跑很久,更没有调参,所以结果凑合能看出一种趋势,等过几天有时间在跑跑该该参数之类的看能不能有所提升,就简单上几个截图吧。
这里写图片描述
这里写图片描述
这里写图片描述

最后的最后再贴上几个链接,都是在学习和仿真这安论文的时候看到的一些感觉不错的博客之类的:
1,richliao,他关于这篇文章写了三篇博客,分别从CNN/RNN/HAN逐层递进进行介绍,写得很不错,可以加深理解。不过是使用keras实现的,博客和代码链接如下:
https://richliao.github.io/
https://github.com/richliao/textClassifier
2,yelp数据集下载链接:
https://github.com/rekiksab/Yelp/tree/master/yelp_challenge/yelp_phoenix_academic_dataset
3,EdGENetworks,这是一个使用pytorch实现的链接,其实代码我没怎么看,但是发现背后有一个屌屌的公司explosion.ai,博客里面还是写了很干货的,要好好学习下。
https://github.com/EdGENetworks/attention-networks-for-classification
https://explosion.ai/blog/deep-learning-formula-nlp
4,ematvey,这个博主使用tensorflow实现了一个版本,我也参考了他数据处理部分的代码,但是感觉程序有点不太容易读,给出链接,仁者见仁。
https://github.com/ematvey/deep-text-classifier

作者:liuchonge 发表于2017/7/2 16:08:08 原文链接
阅读:4 评论:0 查看评论

          NVIDIA’s Drive PX Platform Gains Support From Volvo & Autoliv   
NVIDIA has been talking about autonomous driving for a number of years, ensuring automakers that its solution is the best one. Considering the fact that NVIDIA has also been hugely focused on deep-learning and artificial intelligence, and those things back up the smarts in Drive PX, it has a good case on.....