2017年10月2日星期一

谷歌语音助手的智商是Siri的两倍:中科院发表AI智力研究论文

中国科学院最近的一项研究显示,谷歌人工智能语音助手的智商为 47.28,而 Siri 的分值是 23.94——显然,两者都无法匹敌人类六岁儿童的水平。




在人工智能发展速度越来越快的今天,各家科技巨头的语音助手实用性如何?最近,来自中国科学院的研究者对市面上人工智能系统的智商进行了一次研究。在该研究的论文中,研究人员测得谷歌 AI 助手 2016 年版的智商(IQ)值为 47.28,这个数字高于百度 AI 助手(32.92)、微软必应(31.98),而且几乎两倍于苹果 Siri(23.94)。


值得注意的是,以上所有人工智能系统的智商都没有达到人类 6 岁儿童的水平(55.5),与人类 18 岁的平均水平 97 更是相差甚远。看来人工智能领域的研究道路仍然漫长。


不过,研究人员同时发现,各家公司的产品在过去的几年里已经变得越来越聪明了。在 2014 年,谷歌系统的 IQ 分数为 26.5,而微软只有 13.5。


近年来,苹果、谷歌、微软等科技巨头不断在人工智能领域投入资金和精力,语音识别、图像识别等领域的技术进步正在加速,所有这些技术也已经开始在不同方面为科技公司带来回报。目前的 AI 系统已在很多特定领域具有超越人类水平的表现。这些技术可用于广告投放获取收益。


但是对比现有的 AI 系统一直很困难,尤其是当它们与人类密不可分时。这正是研究者试图获取对比方法的原因之一,并已经把系统在知识的掌握、学习、使用、创造等方面的能力考虑在内。

谷歌和苹果目前并未就这一研究发表评论。


论文:Intelligence Quotient and Intelligence Grade of Artificial Intelligence




论文链接:http://ift.tt/2x8FvG7


摘要:虽然人工智能目前是科学研究中最为有趣的领域之一,但新兴 AI 系统所构成的潜在威胁仍然是持续争议的根源。为了应对这一威胁,该研究提出一种标准的智能模型,从知识的四个方面统一人类与 AI 的标准:输入、输出、理解与创造。通过这一模型我们观察到三个挑战:1)扩展冯·诺依曼架构;2)测试和排序自然与人工系统(包括人类、谷歌、必应、百度、Siri)的智商;3)从机器人到谷歌大脑把人工智能系统划分为七个等级。据此,我们得出了 AlphaGo 属于第三等级的结论。


]]> 原文: http://ift.tt/2wuyMa1
RSS Feed

机器知心

IFTTT

十分钟搞定Keras序列到序列学习(附代码实现)

如何在 Keras 中实现 RNN 序列到序列学习?本文中,作者将尝试对这一问题做出简短解答;本文预设你已有一些循环网络和 Keras 的使用经验。


GitHub:http://ift.tt/2wutyuG


什么是序列到序列学习?


序列到序列学习(Seq2Seq)是指训练模型从而把一个域的序列(比如英语语句)转化为另一个域的序列(比如法语中的对应语句)。

  1. "the cat sat on the mat" -> [Seq2Seq model] -> "le chat etait assis sur le tapis"

Seq2Seq 可用于机器翻译或者省去问题回答——通常来讲,它可以随时生成文本。完成这一任务有很多方式,比如 RNN 或一维卷积。本文只介绍 RNN。


次要案例:当输入序列和输出序列长度相同


当输入序列和输出序列长度相同时,你可以通过 Keras LSTM 或者 GRU 层(或者其中的堆栈)简单地实现模型。这一实例脚本中的案例展示了如何教会 RNN 学习添加被编码为字符串的数字:



一般案例:标准的 Seq2Seq


一般情况下,输入序列和输出序列有不同的长度(比如机器翻译)。这就需要一个更高级的设置,尤其在没有进一步语境的「序列到序列模型」时。下面是其工作原理:

  • 一个 RNN 层(或其中的堆栈)作为「编码器」:它处理输入序列并反馈其内部状态。注意我们抛弃了编码器 RNN 的输出,只恢复其状态。该状态在下一步中充当解码器的「语境」。
  • 另一个 RNN 层作为「解码器」:在给定目标序列先前字母的情况下,它被训练以预测目标序列的下一个字符。具体讲,它被训练把目标序列转化为相同序列,但接下来被一个时间步抵消,这一训练过程在语境中被称为「teacher forcing」。更重要的是,编码器把其状态向量用作初始状态,如此编码器获得了其将要生成的信息。实际上,在给定 targets[...t] 的情况下,解码器学习生成 targets[t+1...],前提是在输入序列上。



在推理模式中,即当要解码未知的输入序列,我们完成了一个稍微不同的处理:

  1. 把输入序列编码进状态向量
  2. 从大小为 1 的目标序列开始
  3. 馈送状态向量和 1 个字符的目标序列到解码器从而为下一字符生成预测
  4. 通过这些预测采样下一个字符(我们使用 argmax)
  5. 把采样的字符附加到目标序列
  6. 不断重复直至我们生成序列最后的字符或者达到字符的极限



相同的处理也可被用于训练没有「teacher forcing」的 Seq2Seq 网络,即把解码器的预测再注入到解码器之中。


一个 Keras 实例


让我们用实际的代码演示一下这些想法。


对于实例实现,我们将使用一对英语语句及其法语翻译的数据集,你可以从 http://ift.tt/2wutzyK fra-eng.zip。我们将会实现一个字符级别的序列到序列模型,逐个字符地处理这些输入并生成输出。另一个选择是单词级别的模型,它对机器学习更常用。在本文最后,你会发现通过嵌入层把我们的模型转化为单词级别模型的一些注释。


这是实例的全部脚本:http://ift.tt/2fGf2cw


下面是这一过程的总结:


1. 把语句转化为 3 个 Numpy 数组 encoder_input_data、decoder_input_data、decoder_target_data:

  • encoder_input_data 是一个形态的 3D 数组(num_pairs, max_english_sentence_length, num_english_characters),包含一个英语语句的独热向量化。
  • decoder_input_data 是一个形态的 3D 数组(num_pairs, max_french_sentence_length, num_french_characters),包含一个法语语句的独热向量化。
  • decoder_target_data 与 decoder_input_data 相同,但是被一个时间步抵消。decoder_target_data[:, t, :] 与 decoder_input_data[:, t + 1, :] 相同。

2. 在给定 encoder_input_data 和 decoder_input_data 的情况下,训练一个基本的基于 LSTM 的 Seq2Seq 模型以预测 decoder_target_data。我们的模型使用 teacher forcing。

3. 解码一些语句以检查模型正在工作。

由于训练过程和推理过程(解码语句)相当不同,我们使用了不同的模型,虽然两者具有相同的内在层。这是我们的模型,它利用了 Keras RNN 的 3 个关键功能:

  • return_state 构造函数参数配置一个 RNN 层以反馈列表,其中第一个是其输出,下一个是内部的 RNN 状态。这被用于恢复编码器的状态。
  • inital_state 调用参数指定一个 RNN 的初始状态,这被用于把编码器状态作为初始状态传递至解码器。
  • return_sequences 构造函数参数配置一个 RNN 反馈输出的全部序列。这被用在解码器中。
  1. from keras.models import Model

  2. from keras.layers import Input, LSTM, Dense

  3. # Define an input sequence and process it.

  4. encoder_inputs = Input(shape=(None, num_encoder_tokens))

  5. encoder = LSTM(latent_dim, return_state=True)

  6. encoder_outputs, state_h, state_c = encoder(encoder_inputs)

  7. # We discard `encoder_outputs` and only keep the states.

  8. encoder_states = [state_h, state_c]

  9. # Set up the decoder, using `encoder_states` as initial state.

  10. decoder_inputs = Input(shape=(None, num_decoder_tokens))

  11. # We set up our decoder to return full output sequences,

  12. # and to return internal states as well. We don't use the

  13. # return states in the training model, but we will use them in inference.

  14. decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)

  15. decoder_outputs, _, _ = decoder_lstm(decoder_inputs,

  16.                                     initial_state=encoder_states)

  17. decoder_dense = Dense(num_decoder_tokens, activation='softmax')

  18. decoder_outputs = decoder_dense(decoder_outputs)

  19. # Define the model that will turn

  20. # `encoder_input_data` & `decoder_input_data` into `decoder_target_data`

  21. model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

我们用这两行代码训练模型,同时在 20% 样本的留存集中监测损失。

  1. # Run training

  2. model.compile(optimizer='rmsprop', loss='categorical_crossentropy')

  3. model.fit([encoder_input_data, decoder_input_data], decoder_target_data,

  4.          batch_size=batch_size,

  5.          epochs=epochs,

  6.          validation_split=0.2)

大约 1 小时后在 MacBook CPU 上,我们已准备好做推断。为了解码测试语句,我们将重复:

  • 编码输入语句,检索初始解码器状态。
  • 用初始状态运行一步解码器,以「序列开始」为目标。输出即是下一个目标字符。
  • 附加预测到的目标字符并重复。

这是我们的推断设置:

  1. encoder_model = Model(encoder_inputs, encoder_states)

  2. decoder_state_input_h = Input(shape=(latent_dim,))

  3. decoder_state_input_c = Input(shape=(latent_dim,))

  4. decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]

  5. decoder_outputs, state_h, state_c = decoder_lstm(

  6.    decoder_inputs, initial_state=decoder_states_inputs)

  7. decoder_states = [state_h, state_c]

  8. decoder_outputs = decoder_dense(decoder_outputs)

  9. decoder_model = Model(

  10.    [decoder_inputs] + decoder_states_inputs,

  11.    [decoder_outputs] + decoder_states)

我们使用它实现上述推断循环(inference loop):

  1. def decode_sequence(input_seq):

  2.    # Encode the input as state vectors.

  3.    states_value = encoder_model.predict(input_seq)

  4.    # Generate empty target sequence of length 1.

  5.    target_seq = np.zeros((1, 1, num_decoder_tokens))

  6.    # Populate the first character of target sequence with the start character.

  7.    target_seq[0, 0, target_token_index['\t']] = 1.

  8.    # Sampling loop for a batch of sequences

  9.    # (to simplify, here we assume a batch of size 1).

  10.    stop_condition = False

  11.    decoded_sentence = ''

  12.    while not stop_condition:

  13.        output_tokens, h, c = decoder_model.predict(

  14.            [target_seq] + states_value)

  15.        # Sample a token

  16.        sampled_token_index = np.argmax(output_tokens[0, -1, :])

  17.        sampled_char = reverse_target_char_index[sampled_token_index]

  18.        decoded_sentence += sampled_char

  19.        # Exit condition: either hit max length

  20.        # or find stop character.

  21.        if (sampled_char == '\n' or

  22.           len(decoded_sentence) > max_decoder_seq_length):

  23.            stop_condition = True

  24.        # Update the target sequence (of length 1).

  25.        target_seq = np.zeros((1, 1, num_decoder_tokens))

  26.        target_seq[0, 0, sampled_token_index] = 1.

  27.        # Update states

  28.        states_value = [h, c]

  29.    return decoded_sentence

我们得到了一些不错的结果——这在意料之中,因为我们解码的样本来自训练测试。

  1. Input sentence: Be nice.

  2. Decoded sentence: Soyez gentil !

  3. -

  4. Input sentence: Drop it!

  5. Decoded sentence: Laissez tomber !

  6. -

  7. Input sentence: Get out!

  8. Decoded sentence: Sortez !

这就是我们的十分钟入门 Keras 序列到序列模型教程。完整代码详见 GitHub:http://ift.tt/2fGf2cw


常见问题


1. 我想使用 GRU 层代替 LSTM,应该怎么做?


这实际上变简单了,因为 GRU 只有一个状态,而 LSTM 有两个状态。这是使用 GRU 层适应训练模型的方法:

  1. encoder_inputs = Input(shape=(None, num_encoder_tokens))

  2. encoder = GRU(latent_dim, return_state=True)

  3. encoder_outputs, state_h = encoder(encoder_inputs)

  4. decoder_inputs = Input(shape=(None, num_decoder_tokens))

  5. decoder_gru = GRU(latent_dim, return_sequences=True)

  6. decoder_outputs = decoder_gru(decoder_inputs, initial_state=state_h)

  7. decoder_dense = Dense(num_decoder_tokens, activation='softmax')

  8. decoder_outputs = decoder_dense(decoder_outputs)

  9. model = Model([encoder_inputs, decoder_inputs], decoder_outputs)


2. 我想使用整数序列的单词级别模型,应该怎么做?


如果你的输入是整数序列(如按词典索引编码的单词序列),你可以通过 Embedding 层嵌入这些整数标记。方法如下:

  1. # Define an input sequence and process it.

  2. encoder_inputs = Input(shape=(None,))

  3. x = Embedding(num_encoder_tokens, latent_dim)(encoder_inputs)

  4. x, state_h, state_c = LSTM(latent_dim,

  5.                           return_state=True)(x)

  6. encoder_states = [state_h, state_c]

  7. # Set up the decoder, using `encoder_states` as initial state.

  8. decoder_inputs = Input(shape=(None,))

  9. x = Embedding(num_decoder_tokens, latent_dim)(decoder_inputs)

  10. x = LSTM(latent_dim, return_sequences=True)(x, initial_state=encoder_states)

  11. decoder_outputs = Dense(num_decoder_tokens, activation='softmax')(x)

  12. # Define the model that will turn

  13. # `encoder_input_data` & `decoder_input_data` into `decoder_target_data`

  14. model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

  15. # Compile & run training

  16. model.compile(optimizer='rmsprop', loss='categorical_crossentropy')

  17. # Note that `decoder_target_data` needs to be one-hot encoded,

  18. # rather than sequences of integers like `decoder_input_data`!

  19. model.fit([encoder_input_data, decoder_input_data], decoder_target_data,

  20.          batch_size=batch_size,

  21.          epochs=epochs,

  22.          validation_split=0.2)


3. 如果我不想使用「teacher forcing」,应该怎么做?


一些案例中可能不能使用 teacher forcing,因为你无法获取完整的目标序列,比如,在线训练非常长的语句,则缓冲完成输入-目标语言对是不可能的。在这种情况下,你要通过将解码器的预测重新注入解码器输入进行训练,就像我们进行推断时所做的那样。


你可以通过构建硬编码输出再注入循环(output reinjection loop)的模型达到该目标:

  1. from keras.layers import Lambda

  2. from keras import backend as K

  3. # The first part is unchanged

  4. encoder_inputs = Input(shape=(None, num_encoder_tokens))

  5. encoder = LSTM(latent_dim, return_state=True)

  6. encoder_outputs, state_h, state_c = encoder(encoder_inputs)

  7. states = [state_h, state_c]

  8. # Set up the decoder, which will only process one timestep at a time.

  9. decoder_inputs = Input(shape=(1, num_decoder_tokens))

  10. decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)

  11. decoder_dense = Dense(num_decoder_tokens, activation='softmax')

  12. all_outputs = []

  13. inputs = decoder_inputs

  14. for _ in range(max_decoder_seq_length):

  15.    # Run the decoder on one timestep

  16.    outputs, state_h, state_c = decoder_lstm(inputs,

  17.                                             initial_state=states)

  18.    outputs = decoder_dense(outputs)

  19.    # Store the current prediction (we will concatenate all predictions later)

  20.    all_outputs.append(outputs)

  21.    # Reinject the outputs as inputs for the next loop iteration

  22.    # as well as update the states

  23.    inputs = outputs

  24.    states = [state_h, state_c]

  25. # Concatenate all predictions

  26. decoder_outputs = Lambda(lambda x: K.concatenate(x, axis=1))(all_outputs)

  27. # Define and compile model as previously

  28. model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

  29. model.compile(optimizer='rmsprop', loss='categorical_crossentropy')

  30. # Prepare decoder input data that just contains the start character

  31. # Note that we could have made it a constant hard-coded in the model

  32. decoder_input_data = np.zeros((num_samples, 1, num_decoder_tokens))

  33. decoder_input_data[:, 0, target_token_index['\t']] = 1.

  34. # Train model as previously

  35. model.fit([encoder_input_data, decoder_input_data], decoder_target_data,

  36.          batch_size=batch_size,

  37.          epochs=epochs,

  38.          validation_split=0.2)

]]> 原文: http://ift.tt/2wutA5M
RSS Feed

机器知心

IFTTT

搜寻失落的信号:无监督学习面临的众多挑战


无监督特征学习的当前趋势概览:回归到随机目标的流形学习,发掘因果关系以描述视觉特征,以及在强化学习中通过辅助控制任务增强目的性和通过自我模拟进行预训练。从无标注数据中可以挖掘的信息有很多,看起来我们目前的监督学习只不过是掠过了数据蛋糕的表面奶油而已。

2017 年,在无监督学习领域发生了什么?在本文中,我将从个人角度概览一些最近工作进展的。


「无监督学习是机器学习中一场旷日持久的挑战,被视为人工智能的关键要素。」Yann LeCun 解释道。相当程度上,我们在无标注数据中忽略了非常多的信息,而且通常也认为,人类大脑在学习的大部分时间中都不是处于监督状态并能处理无标注信息。或许看看下面这幅著名的「Yann LeCun 的蛋糕」,你能得到更好的理解。




事实上,通过相当数量的标注样本训练机器也许对理解我们的学习机制很有帮助,但是在寻找现象的内部规律的时候;被反常现象震惊并试图寻找其中规律的时候;被好奇心牵动的时候;通过游戏训练技能的时候,这些场景都不需要有人明确地告诉你理论上哪些是好的,哪些是坏的。没错,这些例子选取有些随意,但以上就是我从本文涉及到的论文中找到的一些想法。


下文中提及的所有想法都有共同的基础:从未接触过的数据中找到一种自监督的方法是不太可能的。那么,我们需要寻找在没有标签的数据中寻找哪些信号呢?或者说,如何在没有任何监督的情况下学习特征呢?

《Unsupervised learning by predicting the noise》这篇论文给出了一个很异乎寻常的答案,就是噪声。我认为这篇论文在今年的 ICML 大会上是最重要的研究之一。论文的构想如下:每一个样本都相当于超球面上的一个向量,向量标注了数据点在其上的位置。实际上,学习的过程就相当于将图像和随机向量匹配对应,通过在深度卷积网络里训练,并通过监督学习最小化损失函数。


 

特别是,训练的过程在以网络的参量进行梯度下降和不同图像的伪目标重置之间交替,最终也是为了最小化损失函数。这里展示的图像特征的结果来自 ImageNet。两者都是在 ImageNet 上训练一个 AlexNet 得到的结果,左边的基于目标函数,右边使用的是其提出的无监督学习方法。



这个方法可以说代表了迁移学习算法探索的最先进技术水平,但为什么这种方法能奏效呢?我的解释是:网络学会了用新的表征空间重新表示超球面上的矩阵。这可称为一种内在的流形学习。通过打乱布置进行优化是非常关键的方法,毕竟在新的表征空间中,不恰当的匹配不能够使相似的图像位于相近的位置。此外,正如通常情况一样,网络必须作为一个信息瓶颈。否则,模型会由于容量限制而学习成信息不全的一一对应,给表征增加很多噪声干扰(感谢 Mevlana 强调这一点)。


如此富有成效的结果竟然出自这样反常的想法-我的意思是,论文的作者就是想要这种效果,看看标题就知道了-正是在不断的强调着,你不应该用标注去寻找数据中的模式,即使目标具有很复杂的视觉特征。参见论文《Optimizing the Latent Space of Generative Networks》。

从图像中发现因果关系[Lopez-Paz et al. CVPR17] (http://ift.tt/2yTLjp1)

我接下来的发现来自 Léon Bottou 一次极富启发性和争议性的报告 Looking for the missing signal (https://www.youtube.com/watch?v=DfJeaa--xO0&t=12s)(没错,本文作者偷了他的题目)发现的另外一半来自于他们的 WGAN,是关于因果关系的。但是在讨论之前,我们先回顾一下看看因果关系如何与我们的讨论联系起来。参见论文《Discovering Causal Signals in Images》。


如果你是通过机器学习理解因果关系的,你很快会得出图中整个区域缺少了某样东西,而较少关注它的背景。我们创造了一整套方法,只需要在训练数据中关注它们的联系,就可以将它们互相关联并得出预测结果。但实际上很多种情况下这都不奏效。如果我们可以在模型训练中加入因果关系的考虑的话又会如何呢?根本上说,我们可以阻止我们的卷积网络宣布图中的动物是一只狮子,因为背景表明这是一片典型的热带大草原吗?



很多人都在朝这个方向努力。这篇文章也想证实这样的观点,「图像数据的高级统计描述可以理解因果关系」。更精确的说,作者们猜想,物体特征和非因果特征是紧密联系的,而环境特征和因果特征并不需要互相关联。环境特征提供背景,而物体特征则是在数据集中的边界特性。在图中,它们分别指热带大草原和狮子的鬣毛。


另一方面,「因果特征是指导致图中物体如此表现的原因(就是说,那些特征决定了物体的类别标签),而非因果特征则是由图中物体的表现所导致(就是说,那些特征是由类别标签所决定)。」在我们的例子中,因果特征是热带大草原的视觉模式,非因果特征是狮子的鬣毛。


他们是怎么进行实验的呢?太简短的说明会有偏差,我将尽量避免。首先,我们需要训练一个探测器寻找因果的方向,这个想法源于大量过去工作所证实的,「加法因果模型」会在观察数据中遗留关于因果方向的统计痕迹,可以依次在学习高级时间点的过程中被探测到。(如果听起来太陌生,我推荐先看看参考文献)这个想法意在通过神经网络学习捕捉这些统计痕迹,可以用来辨别因果和非因果特征(进行二进制分类)。


只有拥有了真实因果关系标注的数据才能训练这样的网络,而这样的数据是很稀有的。但是实际上,通过设置一对因果变量并以一个记号指示因果关系,这样的数据是很容易合成的。目前为止,还没有人这样使用过数据。


第二,两个版本的图像,无论是目标还是屏蔽目标后的图片,都被标准的深度残差网络特征化。一些目标和背景评分都被设计为特征顶端,作为表示目标/背景的信号。



现在我们可以将图像中物体和环境通过因果或者非因果关系联系起来。这样导致的结果是,举例来说,「拥有最高非因果分数的特征比起拥有最高因果分数的特征,表现出更高的物体分数。」通过实验性的证实这个猜想,结果暗示了,图像中的因果性实际上是指物体和背景之间的差异。这个结果展现了其开辟新的研究领域的潜力,理论上,当数据的分布改变的时候,一个更好的探测因果方向的算法应该能更好的提取和学习特征。参见论文:《Causal inference using invariant prediction: identification and confidence intervals》、《Causal Effect Inference with Deep Latent-Variable Models》。


无监督辅助任务的强化学习:《Reinforcement Learning with Unsupervised Auxiliary Tasks》这篇论文以现在标准看来也许有点不够新颖,毕竟在本文写成的时候,它已经被引用过 60 次-自 11 月 16 日发表在 arXiv 上以来。但是实际上针对这个想法已经出现了新的工作,而我并非在其基础上讨论更加复杂的方法,只是由于其基本和新颖的见解而引用了它。


这个方案就是强化学习。强化学习的主要困难就是奖励的稀疏和延迟,那么为什么不引进辅助任务以增强训练信号呢?当然是因为,伪奖励必须和真实目标关联并且在执行过程中不依赖人为的监督。


论文给出了很直接和实在的建议:遍历所有辅助任务并增强目标函数(最大化奖励)。在总体表现的意义上,该策略会在整体表现的前提下学习。实际上,有一些模型会同时接近于主策略与其他策略,以完成额外任务;这些模型会共享它们的参数。例如,模型的最底层可以共同学习,将其视觉特征都展开。「让智能体平衡提高总体奖励的表现和提高辅助任务的表现是很有必要的」。


以下所示是论文中所探索的辅助性任务。首先是像素控制,智能体通过独立的决策最大的改变输入图像的每一个像素点。其基本原理是「感知流中的改变通常和环境中的重要事件有关。」因此学习控制改变是很有意义的。第二个是特征控制,智能体被训练预测价值网络的一些中间层的隐藏单元的活化值。这个想法很有趣,「因为一个智能体的决策或者价值网络能学习提取环境中任务相关的高级特征。」第三个是奖励预测,智能体学习预测即时到来的奖励。这三种辅助任务通过智能体过去经验缓存的不断重新体验来学习。


其它细节暂且不提,这一整套方法被称作 UNREAL。在 Atari 游戏和 Labyrint 的测试中,它表现出了很快的学习速度,并能做出更好的决策。



论文最后的洞见是关于像素控制的有效性,而不是简单通过重构损失函数来进行预测的。可以将这些行为视为视觉自监督,但这是另一种层次的抽象概念。「学习重构只能让刚开始的学习速度很快,但最后得到的效果却更差。我们的假设是输入重构会降低最后的表现效果,因为它过于关注重构视觉输入的不相关部分,而不是能得到奖励的视觉线索。」




通过非对称自我模拟的内在动机形成和无意识学习:论文《Intrinsic Motivation and Automatic Curricula via Asymmetric Self-Play》。最后我想强调的一篇论文是强化学习中关于辅助任务的想法。不过,关键是,相比明确的扭曲目标函数,智能体被训练完成完整的自我模拟,在确切的范围内可以自动生成更简单的任务。


自我模拟的最初形态是将智能体分离成「两个独立的意识」而建立的,分别称作 Alice 和 Bob。作者假定自我模拟中环境是(几乎)可逆的或者是可以重置到初始状态的。在这个案例中,Alice 执行了一个任务然后叫 Bob 也做同样的事,即根据 Alice 结束任务时的位置,到达世界中的同一个可观测状态。例如,Alice 可以走动然后捡起一把钥匙,打开一扇门,关掉灯然后停在一个确切的位置;Bob 必须跟随 Alice 做同样事情然后和 Alice 停在同一个位置。最后,可以想象,这个简单环境的根本任务是在灯打开的时候在房间里拿到旗子。




那些任务由 Alice 设定并强迫 Bob 学会与环境互动。Alice 和 Bob 都有明确的奖励函数。Bob 必须将完成任务的时间最小化,而在 Bob 完成了任务的前提下又更费时的时候,Alice 反而能得到更多的奖励。这些决策的相互作用使他们「自动构建起探索的过程」。再次提醒,这是特征学习的自我模拟的另一种实现的想法。


他们在几种环境中测试了这个想法,并在星际争霸的无敌人模式中也尝试了一下。「目标任务是制造新的机枪兵,为了实现目标,智能体必须按特定的次序进行一系列操作:(i)让 SCV 去挖矿;(ii)累积足够的水晶矿,建立一座兵营,以及(iii)一旦兵营建好,开始制造机枪兵。」这其中有多种决策选择,人工智能可以训练更多 SCV,让采矿速度加快,或者修建补给站扩充人口上限。在经过 200 步的训练后,人工智能每建立一个 就能得到加 1 分的奖励。




虽然完全匹配真实游戏中的状态几乎是不可能的,Bob 成功与否只取决于游戏中的全局状态,其中包括了每种单位的编号(包含建筑),以及矿物资源的累积程度。因此 Bob 的目标是在自我模拟中,完成 Alice 在最短时间内能建造的机枪兵数量和累积矿物的数量。在这个方案中,自我模拟确实有助于加快强化学习,并且在收敛行为上表现上,比起强化学习+一个更简单的决策预训练的基线方法的组合,要更好:




这里要注意的是图中并没有显示决策预训练的时间消耗。参见论文《Teacher-Student Curriculum Learning》。


最后一提,并不是说无监督学习就总是困难的,实际上对其行为的测量更为困难。正如 Yoshua Bengio 所说:「我们不知道什么样的表征才是好的表征。[...] 我们甚至对判定无监督学习工作好坏的合适的目标函数都没有一个明确的定义。」


实际上,几乎所有的关于无监督学习都在间接使用监督学习或者强化学习去测量其中的特征是否有意义。在无监督学习还处在提高训练质量和加快训练速度以训练预测模型的阶段的时候,这么做是合理的。但是,在经过一个视频和文本必须使用不可见的数据部分进行一般表征之后,一切都不同了。这和迁移学习的鲁棒性特征的想法如出一辙。

]]> 原文: http://ift.tt/2xP1bZM
RSS Feed

机器知心

IFTTT

2017年10月1日星期日

那个曾经黑掉iPhone和PS3的少年,要把你的车破解成无人车

陈桦 问耕 发自LZYY量子位 出品 | 公众号 QbitAI

你知道霍兹(George Hotz)么?

今天是他28岁生日。十年前,霍兹耗时500多个小时,破解了乔布斯刚发布不久的第一代iPhone,最后换得一辆Nissan跑车和三部未破解的iPhone。从此以后,他顶着Geohot的代号名声大噪,被称为神奇小子、天才黑客。

此后几年,提到iPhone的越狱、破解就会想起Geohot和他的头像。

霍兹不是针对乔布斯。2009年,他开始破解索尼的游戏主机PlayStation 3。两年后,索尼发起控告,最终双方庭外和解。霍茨答应不再破解索尼的产品。然后霍兹先后加入了Facebook和Google。

现在,霍茨创办了一家研究自动驾驶和机器学习的公司,名叫:Comma.ai。在英语里,comma的意思是"逗号"。

另辟蹊径

在旧金山郊外的高速公路上,一辆本田车以时速约90公里行驶。

车内后视镜的下方有个长方形盒子,里面其实是一部智能手机,通过内置摄像头拍摄加州的高速公路,并将红色和绿色的线条投影在图像上。

司机的双手没有握住方向盘,因为这辆汽车正在自动驾驶。

不过,这辆汽车的自动驾驶技术与大部分公司都不相同。

这辆汽车的背后,就是开头提到的天才黑客、卡耐基梅隆大学辍学生霍兹,他正在将美国的公共道路变成自己的实验室。

作为Comma.ai创始人,霍兹正在带领这家旧金山湾区的创业公司开发类似于特斯拉和谷歌Waymo的自动驾驶汽车。不同的是,Comma.ai向用户提供技术,让他们自己动手去实现汽车的无人驾驶。

但这并不是他的本意。

一年前,霍兹正准备开始销售Comma One,一款售价999美元的无人驾驶产品。然而,美国高速公路交通安全委员会(NHTSA)发出一封邮件警告称,如果该公司将未经测试的无人驾驶汽车投放至道路,那么将按天处以罚款。

因此,霍兹不得不取消了这款产品的发售计划,并于去年11月免费提供这项技术。

该公司发布了开源的无人驾驶平台Openpilot。此外,他还公布了Neo的开源计划。这是一款基于智能手机的设备,可以连接至某些兼容的本田和讴歌车型,控制车辆的油门、刹车和方向盘,并使用Openpilot去导航。

霍兹一直以来讲话都很大胆,同时还喜欢恶作剧。

他说:"无人驾驶汽车只需要工程师,不需要汽车厂商、监管者,或其他这类人。他们最好远离工程师的工作。"

数据之争

已有73名司机正在使用Openpilot。

此外,有超过1000人正在使用Chffr。这是Comma.ai旗下一款仪表盘摄像头智能手机应用,能记录司机的情况,并发送至该公司位于旧金山一处3层楼房屋地下室的数据中心。霍兹的12人创业团队就在这里工作。

到目前为止,这两款工具总共收集了超过100万英里的驾驶数据,而这也是Comma.ai无人驾驶计划的核心。该公司的工程师使用这些数据去训练无人驾驶的人工智能行为模型。

其他开发无人驾驶技术的公司试图教会汽车去识别不同路况,并手动标记驾驶数据,例如超车道是什么样,禁行标志是什么样。

与此不同,Comma.ai依靠普通司机的模式和行为,训练Openpilot使用的模型。

关注无人驾驶技术的律师和咨询师Jim McPherson表示:"他将所有一切信息记录至计算机。如果东西是静止的,那么就是一棵树。如果是移动的,那么就是行人。他希望计算机能自行判断这些信息。"

霍兹表示,这是正确定义驾驶的唯一方法:观察司机如何驾驶,记录数据,使用这些数据来教会其他汽车。他把卡车比作跳舞,但舞伴是重达两吨的汽车。

Comma.ai的这种方法令不少人感到担忧。仅2016年一年,美国就有近4万人死于汽车交通事故。如果去让普通司机指导Openpilot如何驾驶,那么Openpilot是否会出现不安全的驾驶行为?

克莱姆森大学汽车工程系教授Venkat Krovi表示:"如果有人决定将这些技术放在他们的汽车上,但技术在公共道路上发生了问题,这就会令我感到害怕。如果一辆汽车遇到了此前没有发生过的情况,很难知道汽车会怎样反应。"

不过,霍兹强烈反对这样的观点。他表示,随着Comma.ai收集更多数据,系统会变得越来越智能。他目前正试图黑掉一辆丰田普锐斯,使其兼容Openpilot。

近期,Comma.ai开始销售一款88美元的设备Panda。这款设备可以连接至汽车的系统诊断接口,收集行驶数据,包括刹车力量、方向盘和速度等。他随后会使用这些数据,对尚不支持Openpilot的汽车进行反向工程。

Comma.ai目前仍在依赖来自知名风投a16z的310万美元种子轮投资。

霍兹表示:"我们正计划让项目更开放,我最终关心的是赢得市场。竞争对手们很快看到,我们将把他们的全部工作开源。"

参考报道:

http://ift.tt/2ipqvkQ

— 完 —

诚挚招聘

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

量子位 QbitAI

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



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

RSS5

IFTTT

那个曾经黑掉iPhone和PS3的少年,要把你的车破解成无人车

陈桦 问耕 发自LZYY量子位 出品 | 公众号 QbitAI

你知道霍兹(George Hotz)么?

今天是他28岁生日。十年前,霍兹耗时500多个小时,破解了乔布斯刚发布不久的第一代iPhone,最后换得一辆Nissan跑车和三部未破解的iPhone。从此以后,他顶着Geohot的代号名声大噪,被称为神奇小子、天才黑客。

此后几年,提到iPhone的越狱、破解就会想起Geohot和他的头像。

霍兹不是针对乔布斯。2009年,他开始破解索尼的游戏主机PlayStation 3。两年后,索尼发起控告,最终双方庭外和解。霍茨答应不再破解索尼的产品。然后霍兹先后加入了Facebook和Google。

现在,霍茨创办了一家研究自动驾驶和机器学习的公司,名叫:Comma.ai。在英语里,comma的意思是"逗号"。

另辟蹊径

在旧金山郊外的高速公路上,一辆本田车以时速约90公里行驶。

车内后视镜的下方有个长方形盒子,里面其实是一部智能手机,通过内置摄像头拍摄加州的高速公路,并将红色和绿色的线条投影在图像上。

司机的双手没有握住方向盘,因为这辆汽车正在自动驾驶。

不过,这辆汽车的自动驾驶技术与大部分公司都不相同。

这辆汽车的背后,就是开头提到的天才黑客、卡耐基梅隆大学辍学生霍兹,他正在将美国的公共道路变成自己的实验室。

作为Comma.ai创始人,霍兹正在带领这家旧金山湾区的创业公司开发类似于特斯拉和谷歌Waymo的自动驾驶汽车。不同的是,Comma.ai向用户提供技术,让他们自己动手去实现汽车的无人驾驶。

但这并不是他的本意。

一年前,霍兹正准备开始销售Comma One,一款售价999美元的无人驾驶产品。然而,美国高速公路交通安全委员会(NHTSA)发出一封邮件警告称,如果该公司将未经测试的无人驾驶汽车投放至道路,那么将按天处以罚款。

因此,霍兹不得不取消了这款产品的发售计划,并于去年11月免费提供这项技术。

该公司发布了开源的无人驾驶平台Openpilot。此外,他还公布了Neo的开源计划。这是一款基于智能手机的设备,可以连接至某些兼容的本田和讴歌车型,控制车辆的油门、刹车和方向盘,并使用Openpilot去导航。

霍兹一直以来讲话都很大胆,同时还喜欢恶作剧。

他说:"无人驾驶汽车只需要工程师,不需要汽车厂商、监管者,或其他这类人。他们最好远离工程师的工作。"

数据之争

已有73名司机正在使用Openpilot。

此外,有超过1000人正在使用Chffr。这是Comma.ai旗下一款仪表盘摄像头智能手机应用,能记录司机的情况,并发送至该公司位于旧金山一处3层楼房屋地下室的数据中心。霍兹的12人创业团队就在这里工作。

到目前为止,这两款工具总共收集了超过100万英里的驾驶数据,而这也是Comma.ai无人驾驶计划的核心。该公司的工程师使用这些数据去训练无人驾驶的人工智能行为模型。

其他开发无人驾驶技术的公司试图教会汽车去识别不同路况,并手动标记驾驶数据,例如超车道是什么样,禁行标志是什么样。

与此不同,Comma.ai依靠普通司机的模式和行为,训练Openpilot使用的模型。

关注无人驾驶技术的律师和咨询师Jim McPherson表示:"他将所有一切信息记录至计算机。如果东西是静止的,那么就是一棵树。如果是移动的,那么就是行人。他希望计算机能自行判断这些信息。"

霍兹表示,这是正确定义驾驶的唯一方法:观察司机如何驾驶,记录数据,使用这些数据来教会其他汽车。他把卡车比作跳舞,但舞伴是重达两吨的汽车。

Comma.ai的这种方法令不少人感到担忧。仅2016年一年,美国就有近4万人死于汽车交通事故。如果去让普通司机指导Openpilot如何驾驶,那么Openpilot是否会出现不安全的驾驶行为?

克莱姆森大学汽车工程系教授Venkat Krovi表示:"如果有人决定将这些技术放在他们的汽车上,但技术在公共道路上发生了问题,这就会令我感到害怕。如果一辆汽车遇到了此前没有发生过的情况,很难知道汽车会怎样反应。"

不过,霍兹强烈反对这样的观点。他表示,随着Comma.ai收集更多数据,系统会变得越来越智能。他目前正试图黑掉一辆丰田普锐斯,使其兼容Openpilot。

近期,Comma.ai开始销售一款88美元的设备Panda。这款设备可以连接至汽车的系统诊断接口,收集行驶数据,包括刹车力量、方向盘和速度等。他随后会使用这些数据,对尚不支持Openpilot的汽车进行反向工程。

Comma.ai目前仍在依赖来自知名风投a16z的310万美元种子轮投资。

霍兹表示:"我们正计划让项目更开放,我最终关心的是赢得市场。竞争对手们很快看到,我们将把他们的全部工作开源。"

参考报道:

http://ift.tt/2ipqvkQ

— 完 —

诚挚招聘

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

量子位 QbitAI

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



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

RSS5

IFTTT

LangChain 彻底重写:从开源副业到独角兽,一次“核心迁移”干到 12.5 亿估值 -InfoQ 每周精要No.899期

「每周精要」 NO. 899 2025/10/25 头条 HEADLINE LangChain 彻底重写:从开源副业到独角兽,一次"核心迁移"干到 12.5 亿估值 精选 SELECTED 1000 行代码手搓 OpenAI gpt-oss 推理引...