2018年8月1日星期三

自然语言处理的一大步,应用Word2Vec模型学习单词向量表征

在常见的自然语言处理系统中,单词的编码是任意的,因此无法向系统提供各个符号之间可能存在关系的有用信息,还会带来数据稀疏问题。使用向量对词进行表示可以克服其中的一些障碍。本文通过推理、范例及数学公式介绍了从原始文本中学习「词嵌入」的模型 Word2Vec。该模型通常用在预处理阶段,可以提高计算效率。

让我们用推理、范例及数学公式来介绍 Word2Vec

引言

Word2Vec 模型用于学习被称为「词嵌入」的单词向量表示,通常用在预处理阶段,之后,学习到的词向量可以被输入到一个判别模型(通常是一个 RNN)中,进而生成预测或被用于处理其他有趣的任务。

为什么要学习词的嵌入表示

图像和音频处理系统与丰富的高维数据集一起工作,其处理的图像数据被编码为各个原始像素强度的向量,因此所有信息都被编码在数据中,从而可以很容易地建立起系统中各种实体之间的关系(比如猫和狗)。

但是,在常见的自然语言处理系统中,单词被视为离散的原子符号,因此」猫」可以被表示为 Id537 而」狗」可以被表示为 Id143。这些编码是任意的,因而无法向系统提供各个符号之间可能存在关系的有用信息。这意味着该模型在处理关于「狗」的数据时无法充分利用关于「猫」的知识(例如它们都是动物、宠物、有四只脚等)。

将单词表示为独特、离散的序列号还会导致数据稀疏问题,这通常意味着我们可能需要更多数据才能成功地训练统计模型,而使用向量对词进行表示可以克服其中的一些障碍。

举例来说:

传统的自然语言处理方法涉及到许多语言学本身的知识。理解诸如音素和语素之类的术语是相当基础和必要的,因为有许多语言学分支致力于这样的研究。我们来看看传统的自然语言处理如何试图理解下面的单词。

假设我们的目标是收集关于这个词的一些信息(表征它的情感,找到它的定义等)。利用我们的语言学知识可以将这个词分解成 3 个部分。

深度学习最基本的层次是表示学习。在这里,我们将通过相同方法在大规模数据集上为单词构建向量表示。

词向量

我们把每一个单词表示为一个 d 维的向量。在这里 d=6。我们希望根据这个句子,为每一个单独的词构建它的向量表示。

现在让我们来思考一下如何填充这些值。我们希望这些值能够一定程度上表示这个单词和它的上下文、含义或语义信息。一种方法是构建共现矩阵。

共现矩阵包含了语料库(或训练集)中每一个单词同出现在它后一个单词的统计信息。下表是上面所示句子的共现矩阵。

通过这个简单的矩阵,我们能够获得非常有用的信息。例如,「love」和「like」这两个词对名词(NLP 和 dogs)的计数都是 1。他们对「I」的计数也是 1,这表明这些词很可能是某种动词。对于远比一个句子更大的数据集,可以预料的是这种相似性会体现得更加清晰,因为「like」、」love」和其他具有相似上下文的同义词将开始具有相似的向量表示。

这是一个好的开始,但应该注意每个单词的维度将随着语料库的大小线性增加。如果我们有一百万词(在自然语言处理任务中并不算很多),我们将会得到一个一百万乘一百万的非常稀疏(有很多 0)的矩阵,存储效率很低。后来人们在探索更好的词向量表示上取得了很多进展。其中最著名的是 Word2Vec。

正式介绍 

向量空间模型(VSM)表示(嵌入)连续向量空间中的单词,其中语义上相似的单词被映射到相邻的点(「都嵌在彼此附近」)。向量空间模型在自然语言处理中有着悠久、丰富的历史,但是所有方法都以某种方式依赖于分布假说,该假说认为出现在相同语境中的词语具有相似的语义。基于这一原则的方法可以被分为两类:

 1. 基于计数的方法(例如隐性语义分析)

 2. 预测方法(例如神经概率语言模型)

二者的区别在于:

基于计数的方法计算某个词在大型文本语料库中与其相邻词汇共同出现的频率的统计数据,然后将这些统计数据映射到每个词的小而密集的向量。

预测模型直接尝试根据学习到的近邻单词的小密集嵌入向量(考虑模型的参数)来预测单词。

Word2vec 是一种用于从原始文本中学习词嵌入的模型,它有很高的计算效率。它主要有两种实现方式,一种是连续词袋模型(CBOW),另一种是 Skip-Gram 模型。这两种方式在算法上是相似的,唯一的差别在于 CBOW 从源上下文单词中预测目标单词,而 Skip-Gram 则恰恰相反,它根据目标单词预测源上下文单词。

接下来,我们将重点讨论 skip-gram 模型。

应用到的数学知识

神经概率语言模型一般使用最大似然原则进行训练,其目标是要最大化在给定前面的单词 h(对于「history」)时的下一个单词 wt(对于「target」)的 softmax 概率

其中 score(wt, h) 计算目标词 wt 与上下文 h 的相容性(常用点积)。

我们通过在训练集上最大化它的对数似然来训练这个模型。所以,我们要最大化以下损失函数:

这为语言建模提供了一个合适的标准化概率模型。

我们可以用另一种形式来更好地展示这种方法,它可以清晰地展示在训练过程中为了最大化目标函数而不断改变的选择变量(或参数)。

我们的目标是找到可以用于预测当前单词的周围词汇的向量表示。我们尤其希望最大化我们在整个语料库上的平均对数概率:

这个等式的主要含义是,在当前单词的一定窗口范围 c 内出现的单词 wt 存在一定的概率 p。这个概率同当前词 wt 和我们设定的参数 theta 相关。我们希望设定的参数 theta 可以最大化整个语料库的上述概率。

基本参数化:Softmax 模型

基本的 skip-gram 模型定义了经过 softmax 函数计算的概率 p。如果我们的词汇表中有 N 个词,而我们希望学习的嵌入向量的维度为 k,那么我们可以设定 wi 是 N 维的 ont-hot 向量,theta 是一个 N×K 的嵌入矩阵,从而有:

值得注意的是,在学习之后,矩阵 theta 可以被认为是嵌入查找矩阵。

在架构方面,它是一个简单的三层神经网络。

 1. 使用一个 3 层神经网络(1 个输入层+ 1 个隐藏层+ 1 个输出层)。

 2. 输入一个词,并训练模型来预测它的相邻词汇。

 3. 删除最后一层(输出层)并保留输入和隐藏层。

 4. 现在,输入一个词汇表中的单词。在隐藏层给出的输出是输入单词的「单词嵌入」。

限制这种参数化方法在大规模语料中的应用的一个主要缺点是计算的效率。具体来说,为了计算单次的正向传播过程,我们需要对整个语料库的词汇进行统计,以计算 softmax 函数。这对于大型数据集来说是非常昂贵的,所以我们希望能够在这个模型和计算效率之间找到一个平衡。

提高计算效率

对于 word2vec 中的特征学习,我们不需要完整的概率模型。CBOW 和 skip-gram 模型是使用二元分类目标(逻辑回归)来训练的,其目标是要在相同的上下文中将真实目标词语(wt)与 k 个伪(噪音)词语 -w 进行区分。

当模型给真实单词分配更高的概率并且将低概率分配给噪音词时,我们可以得到最大化的目标函数。从技术上来讲,我们一般称之为负采样,它提出的更新近似于 softmax 函数更新的极限。但是从计算角度来看,它拥有很高的效率,因为这样一来损失函数的复杂度仅仅依赖于我们选择的噪音词的数量(k)而不是词汇表(V)中的所有单词。这可以大大提高训练的速度。像 Tensorflow 这样的软件包使用了一种非常相似的损失函数,称为噪声对比估计(NCE)损失。

SKIP-GRAM 模型的直观感受

以这个数据集为例:

the quick brown fox jumped over the lazy dog

我们首先构建一个包含所有单词和它们的上下文的数据集。现在,让我们保持原始定义,并将「上下文」定义为目标单词左侧和右侧的窗口单词。设定窗口大小为 1,我们可以得到(上下文,目标)对形式的数据集。

([the, brown], quick), ([quick, fox], brown), ([brown, jumped], fox), ...

回想一下,skip-gram 会颠倒上下文和目标,试图根据目标词预测每个上下文单词,因此任务变为从」quick」预测」the」和」brown」以及从」brown」预测」quick」和」fox」等。

这样一来我们的数据集可以整理为(输入,输出)对,如下所示:

(quick, the), (quick, brown), (brown, quick), (brown, fox), ...

目标函数在定义上依赖于整个数据集,但是我们通常使用随机梯度下降(SGD)方法来对模型进行优化,即每次只使用一个例子(或者每次使用一小批数据,每批的数量通常在 16 到 512 之间)。接下来让我们看一下每一步的训练过程。

让我们想象一下上述例子的训练过程。这里的目标是从 the 预测 quick。我们从一个噪声分布 P(w)(通常是单字符分布)中选取 num_noise 个噪声样本(单字符分布假设每个单词的出现与所有其他单词无关,即我们可以将生成过程看作一个按序列掷骰子的过程)

为了简单起见,我们设定 num_noise = 1,我们选择 sheep 作为一个噪声样本。接下来我们计算这对观察到的和有噪声的例子的损失,即在」t」时刻的目标函数变成:

我们的目标是要对嵌入参数进行更新

 theta 用来最大化这个目标函数。我们通过导出与之相关的损失梯度来实现这一目标。

然后,我们通过向梯度方向迈出一小步来更新嵌入。当我们在整个训练集上重复进行这个过程时,可以对每个单词产生「移动」嵌入向量的效果,直到模型成功地区分真实单词和噪音单词为止。

我们可以通过将它们向下投影到 2 维来可视化学习到的向量。当我们观察这些可视化时,很明显这些向量捕获到了一些关于单词的语义信息以及词与词之间的关系,这在实际中是非常有用的。


原文链接:https://ift.tt/2Id6yuj

]]> 原文: https://ift.tt/2vurAvg
RSS Feed

机器知心

IFTTT

自动给神经网络DEBUG:谷歌推出模糊测试新方法

夏乙 发自 凹非寺量子位 报道 | 公众号 QbitAI

DEBUG,是程序员永无止境的日常。给神经网络捉虫,更是比普通程序难得多:

绝大部分bug都不会导致神经网络崩溃、报错,只能让它训练了没效果,默默地不收敛。

能不能把炼丹师们从无休止无希望的debug工作中拯救出来?

两位谷歌大脑研究员Augustus Odena和Ian Goodfellow说,好像能。

他们推出了一种自动为神经网络做软件测试的方法:TensorFuzz。它非常擅长自动发现那些只有少数某些输入会引发的错误。

比如说,它能在已训练的神经网络里发现数值误差,生成神经网络和其量化版本之间的分歧,发现字符级语言模型中的不良行为。

这种方法说新也不新,它来源于传统编程技艺中的一种测试手段:覆盖引导的模糊测试,英语叫coverage-guided fuzzing,简称CGF。

模糊测试,就是通过向目标系统提供非预期的输入并监视异常结果,来发现软件漏洞。也就是说,用随机坏数据(也称做 fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。

而所谓"覆盖引导"的模糊测试,是指在进行模糊测试时,尽量最大化程序的代码覆盖率,测试尽可能多的代码分支。

AFL、libFuzzer都是比较常见的模糊测试工具。

当然传统的方法,不能直接用于神经网络。把CGF搬到神经网络上,不能像在传统的测试中那样简单地去计算分支覆盖率。为此,深度学习的研究者们提出了不少计算覆盖率的新方法,来计算神经元覆盖率、神经元边界覆盖率等等。

两位谷歌大牛提出,应该存储与输入相关联的激活,通过用近似最近邻算法来检查这些输入有没有导致覆盖率的增加,

粗略地说,TensorFuzz是通过查看计算图的"激活"来测量覆盖率。整体架构如下图所示,左边是模糊测试的程序图,标明了数据如何流动;右边以算法形式描述了模糊测试过程的主循环。

说一下实验结果。

1、CGF可以在训练好的神经网络中有效发现数值误差

由于神经网络使用浮点数学,因此无论是在训练还是评估时,都很容易受到数值问题的影像。众所周知,这些问题很难调试。而CGF可以帮助我们专注于找到导致NaN值的输入。

2、CGF揭示了模型和其量化版本之间的分歧

量化是一种存储神经网络权重的方法,本质上是使用较少的数值表示来执行神经网络的计算。量化是降低神经网络计算成本或尺寸的流行方法。但是一定要避免量化之后,显著降低模型的准确性。

CGF可以在数据周围的小区域内快速找到许多错误,在测试的案例中,70%的情况下模糊器能够产生分歧。另外,在给定相同突变的情况下,随机搜索没有找到新的错误。

3、CGF揭示了字符级语言模型中的不良行为

作者运行了TensorFuzz和随机搜索进行测试,测试目的有两个,一是模型不应该连续多次重复相同的词,而是不应该输出黑名单上的词。

测试进行24小时后,TensorFuzz和随机搜索都生成了连续重复的词。此外,TensorFuzz生成了十个黑名单词汇中的六个,而随机搜索只有一个。

大概就酱。

总之,作者为神经网络引入CGF的概念,并且在论文中描述了如何实现。上面的三个实验结果,证明了TensorFuzz的实际适用性。

Goodfellow说,他希望TensorFuzz能成为包括机器学习在内复杂软件的基础回归测试。例如在新版本发布前,模糊搜索新旧版本之间的差异。

论文传送门在此:

Debugging Neural Networks with Coverage-Guided Fuzzing

Abstract:

Machine learning models are notoriously difficult to interpret and debug. This is particularly true of neural networks. In this work, we introduce automated software testing techniques for neural networks that are well-suited to discovering errors which occur only for rare inputs. Specifically, we develop coverage-guided fuzzing (CGF) methods for neural networks. In CGF, random mutations of inputs to a neural network are guided by a coverage metric toward the goal of satisfying user-specified constraints. We describe how fast approximate nearest neighbor algorithms can provide this coverage metric. We then discuss the application of CGF to the following goals: finding numerical errors in trained neural networks, generating disagreements between neural networks and quantized versions of those networks, and surfacing undesirable behavior in character level language models. Finally, we release an open source library called TensorFuzz that implements the described techniques.

作者还说了,TensorFuzz是一个开源库。 不过嘛,目前两位研究人员还没放出地址,为期应该不远了~

—欢迎大家关注我们的专栏:量子位 - 知乎专栏诚挚招聘量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。量子位 QbitAI· 头条号签约作者վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2LGVerW
RSS Feed

RSS5

IFTTT

百度押注AI有了大回报,李彦宏首次披露Apollo如何赚钱

李根 夏乙 发自 凹非寺 量子位 报道 | 公众号 QbitAI

财报业绩好,Robin乐呵呵。

今日上午,百度交出2018年第二季度财报,超出此前华尔街最乐观的预期。

结合这份财报,以及李彦宏刚刚在电话会议上的发言,我们发现了百度业务的现状和未来前(钱)景几个亮点:

  • AI开始在百度营收中发挥明显作用
  • 李彦宏首次披露Apollo的商业模式
  • 百度为自动驾驶开发的ACU浮出水面

对于百度交出的这份答卷,资本市场当然不可能没有反应:财报发布后,百度股价盘后上扬,涨幅一度近5%。

AI开始赚大钱

首先,这是一份业绩为总营收人民币260亿元(约合39.3亿美元)、净利润人民币64亿元(约合9.67亿美元)的财报。

什么概念?

直观类比来说,一个季度赚的钱,超过了中国第二大搜索公司的总市值;一个季度所得利润,超过了个别老牌门户的最新市值。

如此一比,百度赚钱能力还是蛮吓人的。

那百度又是如何赚钱的呢?很简单,靠广告。

这一季度的百度营收,来自网络营销业务的有211亿元,同比增长25%。这个网络营销业务,约等于广告。

百度的广告,过去集中体现为搜索广告,现在的主力则是搜索+信息流,双引擎驱动。

广告业务这样的增速,得益于双引擎,也得益于技术的创新,特别是AI加持。李彦宏自己也说,中国互联网用户总量增速是在放缓的,接下来业务发展的主要驱动力是技术创新。

对于百度来说,主力自然是AI。

AI对广告业务最直接、最明显的助力,在于转化率的提升。

用户画像和推送都得精准,信息分发和广告匹配都得同时"在线",否则赚点钱OK,赚百度这么多钱不容易。

百度披露的是,自从用深度强化学习优化广告效果后,能为广告主提出更好的关键词、图片、视频建议,提升转化率和广告的接受度。

AI加持之下,用户体验的进步也会间接提振广告业务。

具体数据方面,搜索结果首条直接满足需求比例达37%,搜索结果中有38%来自熊掌号优质内容,同时超过1/6的搜索PV都覆盖高质量的视频结果。百度App的日活则达到了1.48亿。

当然,内容质量和广告内容也需要配合得好,不能太过伤害用户体验。

于是李彦宏也开诚布公表示:业绩强劲、搜索业务收入增长明显、信息流业务流量和商业化增长势头良好,背后就是AI驱动。

此外,商业营收增长势头凶猛,AI变现能力崭露头角,也算是给其他AI业务未来预期增强了信心。

在整个百度AI战略中,信息流是夯实的基础,也还是开路先锋。

过去一年百度战略梳理中,成熟变现的搜索+信息流,被列入核心,而更具中长期远景的业务则相应有所剥离,区分更加明确,利于市场和投资者认知,但整个中轴仍是AI。

其中,隐隐展现出最大潜力的是家居领域的DuerOS、车领域的Apollo,以及包含二者在内的整个AI开发者生态。

这3大方面,目前都进入了规模化落地序列,虽还不能直接变现,但未来预期已经放出来了。

李彦宏点明Apollo商业模式

自动驾驶领域的Apollo是上一季度最抢镜的业务。

在百度刚刚结束的AI开发者生态上,李彦宏宣布阿波龙实现第100辆量产车下线,首批还会在北京、雄安、深圳和日本东京商业化运营。

阿波龙是百度和金龙汽车合作的L4级完全无人驾驶小巴,是Apollo能力的代表作。

目前在全球范围内,正式量产商用L4级无人车,都是头一件,所以阿波龙第100辆量产车下线消息一宣布,制造方金龙汽车随即涨停。

除了阿波龙,在发布Apollo3.0版本后,百度还宣布在货运领域、限制场景无人驾驶领域都能更进一步,加快量产商用步伐。

在最新生态里,目前已有119家OEM合作伙伴,并且跟全球车企大厂奔驰-戴姆勒、宝马等达成合作。

所以你可能也好奇,开放了核心技术能力,又圈了这么多盟友的Apollo生态,未来到底如何变现?

嗯,这一次,李彦宏亲自透露了几个商业模式。

百度掌舵者说,无论是Apollo还是DuerOS,现在都处于早期积累阶段,未来几个季度都不会产生实质营收贡献。

但Apollo发展得好,变现并不是什么大挑战。

未来通过Apollo的生态,百度可以卖高精度地图、卖仿真平台、甚至卖计算硬件ACU,这些都是很直接很刚需的服务。

高精度地图和仿真平台,之前在Apollo1.5版本就有隆重介绍。

高精度地图是百度多年技术囤积所在,研发在2013年就已启动,采集车队规模近300辆,融合了实时地图构建及定位技术(SLAM)、深度学习、图像处理、计算几何等处理技术,建立了亿量级样本库,能够精细刻画道路上的交通标志、车道线、护栏路沿等上百种要素和属性,数据精度达到厘米级别。

更主要的是,百度高精度地图自动化处理程度超90%,准确率高达95%以上。依托多源感知数据处理、云服务中心和数据中心等构成的Intelligent Map平台,可以实现分钟级的更新。

而配合高精地图,百度的定位技术在城市高楼密集市中心、林荫路、隧道、地库等极具挑战的弱/无GPS场景下也可达到厘米级定位。

仿真平台则内置高精度地图,把海量中国国情的交通场景纳入其中,覆盖了诸多极端情况,帮助开发者优化真实场景下的应对方案,确保自动驾驶车辆上路安全。

同时,Apollo还对外称,仿真平台提供了贯穿自动驾驶研发迭代过程的完整解决方案,帮助开发者发现问题、解决问题和验证问题。

作为证明,百度推出Apollo仿真平台后,在两个月的时间内,跟智行者合作推出了一辆落地的无人驾驶扫地车。

李彦宏要卖的硬件,叫做ACU(Apollo Computing Unit)。今年1月,百度提到将来会销售一系列硬件,能够直接插到车上运行他们的软件,实现自动驾驶功能,这个硬件,就是今天提到的ACU了。

另外,还有一些软硬件一体的方案,比如现在畅谈甚广的代客泊车解决方案,Apollo生态里做出来很轻松。不管是L3,还是L4,Apollo都有广泛的变现机会。

最后还有看不见的红利。因为Apollo团结了诸多力量,进展也很迅速,于是百度得到了中国官方层面的创新支持,可以最早开始基础设施层面的合作,给出路面传感器方案的建议,这也意味着未来无人车不需要昂贵的激光雷达等传感器。

总之归结起来一句话,Apollo已经量产落地,虽然还不能直接贡献营收,但变现起来也机会不少。

(这些电话会议上的回答,也算先给了华尔街一个"交代"。)

DuerOS不急变现

另一项中长期"潜力股"是DuerOS。

数据上看进展也很神速。李彦宏在财报分析会议上专门夸赞了DuerOS,说小度智能音箱系列及相关产品倍受好评,2018年6月DuerOS语音唤醒超过4亿次,几乎是三个月前的两倍。

DuerOS的用户增长让厂长很开心,他表示即便还不到谈商业变现的时候,但业务进展如此之快,如果这个领域可以变现了,百度也会是头一家

在第二季度里,财大气粗的百度推出了售价89元的智能音箱,把国内智能音箱的竞争拖入了百元大战,也带动了DuerOS系统快速进入更多寻常百姓家。

另外,百度还把DuerOS带给了20多家车厂,包含宝马、奔驰-戴姆勒、福特、现代、起亚、奇瑞、北汽和一汽在内的大车厂,都计划推出DuerOS提供的车载语音交互、人脸识别,AR等方面的功能。

Apollo和DuerOS,也在此形成了协同效应。

其他进展

最后,百度AI航母中最基础也最长远的项目,莫过于AI开发者生态。

百度在刚结束不久的AI开发者大会上推出了百度大脑3.0,并且提供了EasyDL,AutoDL和AI Studio等系列开发工具包,以此推动深度学习平台PaddlePaddle的应用。

而且在基础设施层面,昆仑芯片也已经宣布,云端和终端的AI开发者生态,百度都有落子。

隐而未宣的是,百度云也在后发情况下快速追了上来,目前跟阿里云和腾讯云一道,处于国内公有云第一梯队,To B和To G方面的AI商业项目,也已闷声展开。

不过AI开发者生态能展现的潜力和能力,或许需要更长的时间,但百度目前的优势也是显而易见的:百度披露数据称,刚结束的AI开发者大会有全球7300多人来到北京现场。

当然备受关注的,还有百度的智能小程序。

在分析师电话会议上,小程序是被提及最多的问题之一,但是目前似乎百度也没有更多实质性的进展可以对外披露。

等下一季财报再说吧。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2M7hkQA
RSS Feed

RSS5

IFTTT

自动给神经网络DEBUG:谷歌推出模糊测试新方法

夏乙 发自 凹非寺量子位 报道 | 公众号 QbitAI

DEBUG,是程序员永无止境的日常。给神经网络捉虫,更是比普通程序难得多:

绝大部分bug都不会导致神经网络崩溃、报错,只能让它训练了没效果,默默地不收敛。

能不能把炼丹师们从无休止无希望的debug工作中拯救出来?

两位谷歌大脑研究员Augustus Odena和Ian Goodfellow说,好像能。

他们推出了一种自动为神经网络做软件测试的方法:TensorFuzz。它非常擅长自动发现那些只有少数某些输入会引发的错误。

比如说,它能在已训练的神经网络里发现数值误差,生成神经网络和其量化版本之间的分歧,发现字符级语言模型中的不良行为。

这种方法说新也不新,它来源于传统编程技艺中的一种测试手段:覆盖引导的模糊测试,英语叫coverage-guided fuzzing,简称CGF。

模糊测试,就是通过向目标系统提供非预期的输入并监视异常结果,来发现软件漏洞。也就是说,用随机坏数据(也称做 fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。

而所谓"覆盖引导"的模糊测试,是指在进行模糊测试时,尽量最大化程序的代码覆盖率,测试尽可能多的代码分支。

AFL、libFuzzer都是比较常见的模糊测试工具。

当然传统的方法,不能直接用于神经网络。把CGF搬到神经网络上,不能像在传统的测试中那样简单地去计算分支覆盖率。为此,深度学习的研究者们提出了不少计算覆盖率的新方法,来计算神经元覆盖率、神经元边界覆盖率等等。

两位谷歌大牛提出,应该存储与输入相关联的激活,通过用近似最近邻算法来检查这些输入有没有导致覆盖率的增加,

粗略地说,TensorFuzz是通过查看计算图的"激活"来测量覆盖率。整体架构如下图所示,左边是模糊测试的程序图,标明了数据如何流动;右边以算法形式描述了模糊测试过程的主循环。

说一下实验结果。

1、CGF可以在训练好的神经网络中有效发现数值误差

由于神经网络使用浮点数学,因此无论是在训练还是评估时,都很容易受到数值问题的影像。众所周知,这些问题很难调试。而CGF可以帮助我们专注于找到导致NaN值的输入。

2、CGF揭示了模型和其量化版本之间的分歧

量化是一种存储神经网络权重的方法,本质上是使用较少的数值表示来执行神经网络的计算。量化是降低神经网络计算成本或尺寸的流行方法。但是一定要避免量化之后,显著降低模型的准确性。

CGF可以在数据周围的小区域内快速找到许多错误,在测试的案例中,70%的情况下模糊器能够产生分歧。另外,在给定相同突变的情况下,随机搜索没有找到新的错误。

3、CGF揭示了字符级语言模型中的不良行为

作者运行了TensorFuzz和随机搜索进行测试,测试目的有两个,一是模型不应该连续多次重复相同的词,而是不应该输出黑名单上的词。

测试进行24小时后,TensorFuzz和随机搜索都生成了连续重复的词。此外,TensorFuzz生成了十个黑名单词汇中的六个,而随机搜索只有一个。

大概就酱。

总之,作者为神经网络引入CGF的概念,并且在论文中描述了如何实现。上面的三个实验结果,证明了TensorFuzz的实际适用性。

Goodfellow说,他希望TensorFuzz能成为包括机器学习在内复杂软件的基础回归测试。例如在新版本发布前,模糊搜索新旧版本之间的差异。

论文传送门在此:

Debugging Neural Networks with Coverage-Guided Fuzzing

Abstract:

Machine learning models are notoriously difficult to interpret and debug. This is particularly true of neural networks. In this work, we introduce automated software testing techniques for neural networks that are well-suited to discovering errors which occur only for rare inputs. Specifically, we develop coverage-guided fuzzing (CGF) methods for neural networks. In CGF, random mutations of inputs to a neural network are guided by a coverage metric toward the goal of satisfying user-specified constraints. We describe how fast approximate nearest neighbor algorithms can provide this coverage metric. We then discuss the application of CGF to the following goals: finding numerical errors in trained neural networks, generating disagreements between neural networks and quantized versions of those networks, and surfacing undesirable behavior in character level language models. Finally, we release an open source library called TensorFuzz that implements the described techniques.

作者还说了,TensorFuzz是一个开源库。 不过嘛,目前两位研究人员还没放出地址,为期应该不远了~

—欢迎大家关注我们的专栏:量子位 - 知乎专栏诚挚招聘量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。量子位 QbitAI· 头条号签约作者վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2LGVerW
RSS Feed

RSS5

IFTTT

百度押注AI有了大回报,李彦宏首次披露Apollo如何赚钱

李根 夏乙 发自 凹非寺 量子位 报道 | 公众号 QbitAI

财报业绩好,Robin乐呵呵。

今日上午,百度交出2018年第二季度财报,超出此前华尔街最乐观的预期。

结合这份财报,以及李彦宏刚刚在电话会议上的发言,我们发现了百度业务的现状和未来前(钱)景几个亮点:

  • AI开始在百度营收中发挥明显作用
  • 李彦宏首次披露Apollo的商业模式
  • 百度为自动驾驶开发的ACU浮出水面

对于百度交出的这份答卷,资本市场当然不可能没有反应:财报发布后,百度股价盘后上扬,涨幅一度近5%。

AI开始赚大钱

首先,这是一份业绩为总营收人民币260亿元(约合39.3亿美元)、净利润人民币64亿元(约合9.67亿美元)的财报。

什么概念?

直观类比来说,一个季度赚的钱,超过了中国第二大搜索公司的总市值;一个季度所得利润,超过了个别老牌门户的最新市值。

如此一比,百度赚钱能力还是蛮吓人的。

那百度又是如何赚钱的呢?很简单,靠广告。

这一季度的百度营收,来自网络营销业务的有211亿元,同比增长25%。这个网络营销业务,约等于广告。

百度的广告,过去集中体现为搜索广告,现在的主力则是搜索+信息流,双引擎驱动。

广告业务这样的增速,得益于双引擎,也得益于技术的创新,特别是AI加持。李彦宏自己也说,中国互联网用户总量增速是在放缓的,接下来业务发展的主要驱动力是技术创新。

对于百度来说,主力自然是AI。

AI对广告业务最直接、最明显的助力,在于转化率的提升。

用户画像和推送都得精准,信息分发和广告匹配都得同时"在线",否则赚点钱OK,赚百度这么多钱不容易。

百度披露的是,自从用深度强化学习优化广告效果后,能为广告主提出更好的关键词、图片、视频建议,提升转化率和广告的接受度。

AI加持之下,用户体验的进步也会间接提振广告业务。

具体数据方面,搜索结果首条直接满足需求比例达37%,搜索结果中有38%来自熊掌号优质内容,同时超过1/6的搜索PV都覆盖高质量的视频结果。百度App的日活则达到了1.48亿。

当然,内容质量和广告内容也需要配合得好,不能太过伤害用户体验。

于是李彦宏也开诚布公表示:业绩强劲、搜索业务收入增长明显、信息流业务流量和商业化增长势头良好,背后就是AI驱动。

此外,商业营收增长势头凶猛,AI变现能力崭露头角,也算是给其他AI业务未来预期增强了信心。

在整个百度AI战略中,信息流是夯实的基础,也还是开路先锋。

过去一年百度战略梳理中,成熟变现的搜索+信息流,被列入核心,而更具中长期远景的业务则相应有所剥离,区分更加明确,利于市场和投资者认知,但整个中轴仍是AI。

其中,隐隐展现出最大潜力的是家居领域的DuerOS、车领域的Apollo,以及包含二者在内的整个AI开发者生态。

这3大方面,目前都进入了规模化落地序列,虽还不能直接变现,但未来预期已经放出来了。

李彦宏点明Apollo商业模式

自动驾驶领域的Apollo是上一季度最抢镜的业务。

在百度刚刚结束的AI开发者生态上,李彦宏宣布阿波龙实现第100辆量产车下线,首批还会在北京、雄安、深圳和日本东京商业化运营。

阿波龙是百度和金龙汽车合作的L4级完全无人驾驶小巴,是Apollo能力的代表作。

目前在全球范围内,正式量产商用L4级无人车,都是头一件,所以阿波龙第100辆量产车下线消息一宣布,制造方金龙汽车随即涨停。

除了阿波龙,在发布Apollo3.0版本后,百度还宣布在货运领域、限制场景无人驾驶领域都能更进一步,加快量产商用步伐。

在最新生态里,目前已有119家OEM合作伙伴,并且跟全球车企大厂奔驰-戴姆勒、宝马等达成合作。

所以你可能也好奇,开放了核心技术能力,又圈了这么多盟友的Apollo生态,未来到底如何变现?

嗯,这一次,李彦宏亲自透露了几个商业模式。

百度掌舵者说,无论是Apollo还是DuerOS,现在都处于早期积累阶段,未来几个季度都不会产生实质营收贡献。

但Apollo发展得好,变现并不是什么大挑战。

未来通过Apollo的生态,百度可以卖高精度地图、卖仿真平台、甚至卖计算硬件ACU,这些都是很直接很刚需的服务。

高精度地图和仿真平台,之前在Apollo1.5版本就有隆重介绍。

高精度地图是百度多年技术囤积所在,研发在2013年就已启动,采集车队规模近300辆,融合了实时地图构建及定位技术(SLAM)、深度学习、图像处理、计算几何等处理技术,建立了亿量级样本库,能够精细刻画道路上的交通标志、车道线、护栏路沿等上百种要素和属性,数据精度达到厘米级别。

更主要的是,百度高精度地图自动化处理程度超90%,准确率高达95%以上。依托多源感知数据处理、云服务中心和数据中心等构成的Intelligent Map平台,可以实现分钟级的更新。

而配合高精地图,百度的定位技术在城市高楼密集市中心、林荫路、隧道、地库等极具挑战的弱/无GPS场景下也可达到厘米级定位。

仿真平台则内置高精度地图,把海量中国国情的交通场景纳入其中,覆盖了诸多极端情况,帮助开发者优化真实场景下的应对方案,确保自动驾驶车辆上路安全。

同时,Apollo还对外称,仿真平台提供了贯穿自动驾驶研发迭代过程的完整解决方案,帮助开发者发现问题、解决问题和验证问题。

作为证明,百度推出Apollo仿真平台后,在两个月的时间内,跟智行者合作推出了一辆落地的无人驾驶扫地车。

李彦宏要卖的硬件,叫做ACU(Apollo Computing Unit)。今年1月,百度提到将来会销售一系列硬件,能够直接插到车上运行他们的软件,实现自动驾驶功能,这个硬件,就是今天提到的ACU了。

另外,还有一些软硬件一体的方案,比如现在畅谈甚广的代客泊车解决方案,Apollo生态里做出来很轻松。不管是L3,还是L4,Apollo都有广泛的变现机会。

最后还有看不见的红利。因为Apollo团结了诸多力量,进展也很迅速,于是百度得到了中国官方层面的创新支持,可以最早开始基础设施层面的合作,给出路面传感器方案的建议,这也意味着未来无人车不需要昂贵的激光雷达等传感器。

总之归结起来一句话,Apollo已经量产落地,虽然还不能直接贡献营收,但变现起来也机会不少。

(这些电话会议上的回答,也算先给了华尔街一个"交代"。)

DuerOS不急变现

另一项中长期"潜力股"是DuerOS。

数据上看进展也很神速。李彦宏在财报分析会议上专门夸赞了DuerOS,说小度智能音箱系列及相关产品倍受好评,2018年6月DuerOS语音唤醒超过4亿次,几乎是三个月前的两倍。

DuerOS的用户增长让厂长很开心,他表示即便还不到谈商业变现的时候,但业务进展如此之快,如果这个领域可以变现了,百度也会是头一家

在第二季度里,财大气粗的百度推出了售价89元的智能音箱,把国内智能音箱的竞争拖入了百元大战,也带动了DuerOS系统快速进入更多寻常百姓家。

另外,百度还把DuerOS带给了20多家车厂,包含宝马、奔驰-戴姆勒、福特、现代、起亚、奇瑞、北汽和一汽在内的大车厂,都计划推出DuerOS提供的车载语音交互、人脸识别,AR等方面的功能。

Apollo和DuerOS,也在此形成了协同效应。

其他进展

最后,百度AI航母中最基础也最长远的项目,莫过于AI开发者生态。

百度在刚结束不久的AI开发者大会上推出了百度大脑3.0,并且提供了EasyDL,AutoDL和AI Studio等系列开发工具包,以此推动深度学习平台PaddlePaddle的应用。

而且在基础设施层面,昆仑芯片也已经宣布,云端和终端的AI开发者生态,百度都有落子。

隐而未宣的是,百度云也在后发情况下快速追了上来,目前跟阿里云和腾讯云一道,处于国内公有云第一梯队,To B和To G方面的AI商业项目,也已闷声展开。

不过AI开发者生态能展现的潜力和能力,或许需要更长的时间,但百度目前的优势也是显而易见的:百度披露数据称,刚结束的AI开发者大会有全球7300多人来到北京现场。

当然备受关注的,还有百度的智能小程序。

在分析师电话会议上,小程序是被提及最多的问题之一,但是目前似乎百度也没有更多实质性的进展可以对外披露。

等下一季财报再说吧。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2M7hkQA
RSS Feed

RSS5

IFTTT

JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧!- InfoQ 每周精要848期

「每周精要」 NO. 848 2024/09/21 头条 HEADLINE JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧! 精选 SELECTED C++ 发布革命性提案 "借鉴"Rust...