2017年12月2日星期六

“你的深度学习框架包含15个漏洞”,360说 | 附论文

注意!你的深度学习框架有漏洞!

这个警告来自360安全实验室(Qixue Xiao、Deyue Zhang)、佐治亚大学(Kang Li)和弗吉尼亚大学(Weilin Xu)的研究者,他们在一篇论文中,对TensorFlow、Caffe、Torch三个深度学习框架中的第三方软件包进行了研究,并在其中查找漏洞,最后得出最开头的研究结论。

尽管这还只是一项初步研究,但研究人员仍然在三个框架中发现了15个漏洞,类型包括:DoS拒绝服务攻击、躲避攻击等。

他们说:"深度学习框架是复杂的,重度依赖大量开源软件包。"这些依赖库,也正是漏洞的根源。

潜藏风险的依赖库

一个典型的、用深度学习框架开发出来的AI应用,在部署时往往是这样的三层结构:

最上面一层,是开发者看得见的深度学习应用,包含应用逻辑、深度学习模型和相应的数据;中间一层是TensorFlow、Caffe等深度学习框架;最下面一层,则是底层框架依赖,也就是深度学习框架所用到的那些组件,比如说OpenCV、GNU LibC、NymPy、以及Google的protobuf等等。

每个深度学习框架,都依赖着大量第三方软件包。比如说使用最广泛的TensorFlow,就有97个Python依赖库;Caffe背后,有137个依赖库,老牌框架Torch7,也有48个Lua模块。

深度学习框架的依赖库

当你训练图像识别算法的时候,也许并不那么关心Caffe中用到的OpenCV开源库或者TensorFlow依赖的numpy,但是,风险正蕴含其中。

攻击从哪来?

要了解深度学习应用可能面临的风险,就要先清楚它们的攻击面(attack surface),也就是这类软件可能受到怎样的攻击。

对于不同的应用,可能出现的攻击多种多样,不过几位研究员在论文中总结说,有三个攻击面,能够代表绝大部分情况。

他们以MNIST手写数字数据集为例对这三个攻击面做了说明:

输入图像畸形

深度学习应用在进行分类或识别等任务时,会从文件或者网络读取输入数据,在这个环节中,攻击者可能会构建畸形的输入。

需要特别说明的是,如果从摄像头等传感器直接获取输入数据,受到这种攻击的可能性会小很多,但也无法消除。

训练数据畸形

在构建深度学习应用的过程中,需要用数据对模型进行训练,而训练所用的数据集就可能被污染、打上错误的标签。这种攻击方式叫做数据下毒攻击(data poisoningattack)。

模型畸形

如果深度学习开发者使用别人搭建的模型,就可能会遭受这种攻击。

都不安全

以上面提到的第一个攻击面(输入图像畸形)为例,假设你的输入数据来自文件或者网络,TensorFlow、Caffe和Torch就有十几个漏洞,可能遭受DOS拒绝服务攻击、躲避攻击或者系统妥协攻击,比如说下表列出的这些:

相比较而言,TensorFlow算是表现出色的,但其中也有两个Python软件包(NumPy和)存在DoS攻击风险。

开源计算机视觉代码库OpenCV中的漏洞最多,总共发现了11处。Caffe和Torch框架中都使用了OpenCV。另外,Caffe中还有图像处理库libjasper和图像浏览器OpenEXR的易受攻击版本。

有意思的是,研究人员还发现如何利用越界写入(out-of-bounds write)欺骗AI:在OpenCV中,数据指针可以设置为readData函数中的任何值,然后可以将指定的数据写入数据指向的地址。即可以用来改写分类结果。

OpenCV的例子如下:

我们来详细看一下这几类攻击:

威胁一、DoS拒绝服务攻击

我们在深度学习框架中发现,最常见的漏洞是软件错误,导致程序崩溃,或者进入死循环,或者耗尽所有的内存。

威胁二、躲避攻击

面对脆弱的深度学习框架,攻击者可以利用软件漏洞实施躲避攻击,例如:1、通过漏洞覆盖分类结果,修改特定内存内容 2、劫持控制流程以跳过或重新排序模型执行。

威胁三、系统妥协

攻击者可以利用漏洞劫持控制流,或者远程控制托管深度学习应用的系统。这个情况发生在深度学习应用作为云服务运行,并从网络输入馈送时。

这项研究,已经在敦促框架开发者对安全性进行改进了。作者们在论文中说:"我们的研究结果已经得到相关开发商的证实,其中很多已经根据我们的建议进行了修补。"

论文

最后,附上相关论文:

Security Risks in Deep Learning ImplementationsQixue Xiao, Kang Li, Deyue Zhang, Weilin Xu

在量子位公众号(QbitAI)对话界面回复"360",即可以直接下载。

—完—

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

诚挚招聘

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

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

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



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

RSS5

IFTTT

“你的深度学习框架包含15个漏洞”,360说 | 附论文

注意!你的深度学习框架有漏洞!

这个警告来自360安全实验室(Qixue Xiao、Deyue Zhang)、佐治亚大学(Kang Li)和弗吉尼亚大学(Weilin Xu)的研究者,他们在一篇论文中,对TensorFlow、Caffe、Torch三个深度学习框架中的第三方软件包进行了研究,并在其中查找漏洞,最后得出最开头的研究结论。

尽管这还只是一项初步研究,但研究人员仍然在三个框架中发现了15个漏洞,类型包括:DoS拒绝服务攻击、躲避攻击等。

他们说:"深度学习框架是复杂的,重度依赖大量开源软件包。"这些依赖库,也正是漏洞的根源。

潜藏风险的依赖库

一个典型的、用深度学习框架开发出来的AI应用,在部署时往往是这样的三层结构:

最上面一层,是开发者看得见的深度学习应用,包含应用逻辑、深度学习模型和相应的数据;中间一层是TensorFlow、Caffe等深度学习框架;最下面一层,则是底层框架依赖,也就是深度学习框架所用到的那些组件,比如说OpenCV、GNU LibC、NymPy、以及Google的protobuf等等。

每个深度学习框架,都依赖着大量第三方软件包。比如说使用最广泛的TensorFlow,就有97个Python依赖库;Caffe背后,有137个依赖库,老牌框架Torch7,也有48个Lua模块。

深度学习框架的依赖库

当你训练图像识别算法的时候,也许并不那么关心Caffe中用到的OpenCV开源库或者TensorFlow依赖的numpy,但是,风险正蕴含其中。

攻击从哪来?

要了解深度学习应用可能面临的风险,就要先清楚它们的攻击面(attack surface),也就是这类软件可能受到怎样的攻击。

对于不同的应用,可能出现的攻击多种多样,不过几位研究员在论文中总结说,有三个攻击面,能够代表绝大部分情况。

他们以MNIST手写数字数据集为例对这三个攻击面做了说明:

输入图像畸形

深度学习应用在进行分类或识别等任务时,会从文件或者网络读取输入数据,在这个环节中,攻击者可能会构建畸形的输入。

需要特别说明的是,如果从摄像头等传感器直接获取输入数据,受到这种攻击的可能性会小很多,但也无法消除。

训练数据畸形

在构建深度学习应用的过程中,需要用数据对模型进行训练,而训练所用的数据集就可能被污染、打上错误的标签。这种攻击方式叫做数据下毒攻击(data poisoningattack)。

模型畸形

如果深度学习开发者使用别人搭建的模型,就可能会遭受这种攻击。

都不安全

以上面提到的第一个攻击面(输入图像畸形)为例,假设你的输入数据来自文件或者网络,TensorFlow、Caffe和Torch就有十几个漏洞,可能遭受DOS拒绝服务攻击、躲避攻击或者系统妥协攻击,比如说下表列出的这些:

相比较而言,TensorFlow算是表现出色的,但其中也有两个Python软件包(NumPy和)存在DoS攻击风险。

开源计算机视觉代码库OpenCV中的漏洞最多,总共发现了11处。Caffe和Torch框架中都使用了OpenCV。另外,Caffe中还有图像处理库libjasper和图像浏览器OpenEXR的易受攻击版本。

有意思的是,研究人员还发现如何利用越界写入(out-of-bounds write)欺骗AI:在OpenCV中,数据指针可以设置为readData函数中的任何值,然后可以将指定的数据写入数据指向的地址。即可以用来改写分类结果。

OpenCV的例子如下:

我们来详细看一下这几类攻击:

威胁一、DoS拒绝服务攻击

我们在深度学习框架中发现,最常见的漏洞是软件错误,导致程序崩溃,或者进入死循环,或者耗尽所有的内存。

威胁二、躲避攻击

面对脆弱的深度学习框架,攻击者可以利用软件漏洞实施躲避攻击,例如:1、通过漏洞覆盖分类结果,修改特定内存内容 2、劫持控制流程以跳过或重新排序模型执行。

威胁三、系统妥协

攻击者可以利用漏洞劫持控制流,或者远程控制托管深度学习应用的系统。这个情况发生在深度学习应用作为云服务运行,并从网络输入馈送时。

这项研究,已经在敦促框架开发者对安全性进行改进了。作者们在论文中说:"我们的研究结果已经得到相关开发商的证实,其中很多已经根据我们的建议进行了修补。"

论文

最后,附上相关论文:

Security Risks in Deep Learning ImplementationsQixue Xiao, Kang Li, Deyue Zhang, Weilin Xu

在量子位公众号(QbitAI)对话界面回复"360",即可以直接下载。

—完—

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

诚挚招聘

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

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

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



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

RSS5

IFTTT

可视化语音分析:深度对比Wavenet、t-SNE和PCA等算法

这篇文章基于 GitHub 中探索音频数据集的项目。本文列举并对比了一些有趣的算法,例如 Wavenet、UMAP、t-SNE、MFCCs 以及 PCA。此外,本文还展示了如何在 Python 中使用 Librosa 和 Tensorflow 来实现它们,并用 HTML、Javascript 和 CCS 展示可视化结果。



作者希望能和我们分享两个代码库。第一个是用来制作这篇文章的 notebook,它不像我通常喜欢的那样精美,但是花了很长时间,读者可以随意使用并扩展它。


此外,作者也上传了浏览器中的这些可视化代码到 github 上。他使用 Material Design Lite 库以相对简洁的方式创建用户界面,用 THREE.js 库来快速绘制数据并进行优化,还使用 webaudiox.js 可以让音频生成得更容易。


这个可视化方法允许以交互的形式从两个维度探索音频数据集,还可以画出参数化的图形,就像下面展示的一样:



结果以一个小型网页应用的形式放在我们学校的服务器上,读者将鼠标放在紫色点上边,就能听到与这个二维点向量相关联的声音了。


你可以自由的选择音频特征的提取方式(MFCCs 或者 Wavenet 提取到的隐变量),以及降维的方法(UMAP、t-SNE 或者 PCA)。其中 UMAP 和 t-SNE 还可以调整一些参数,例如步长或者困惑度(perplexity)。




这是最终产品的一段演示


什么是维度


那么我们说的维度大小是什么呢?它是机器学习和数据科学中的一个重要话题,用来描述数据集的潜在复杂度。一个数据集由好多数据点组成,每个数据点都有一些固定数量的特征,或者维度。例如,我可能是一个酷爱观察鸟类的人,我用自己在旅途中遇到的鸟组建了一个数据集。如果每个数据点存储了喙长、翼展以及羽毛颜色这些信息,那么就可以说我的数据集的维度是 3。


那么我们为什么要如此关心维度的大小呢?拿以下比喻来说:


你在一条笔直的道路上丢失了一笔现金。你想找到这笔钱,所以你沿着这条线走,然后在相对较短的一段搜索之后就找到了钱。

这一次不太巧,你在运动的时候又一次将这笔现金丢失了,而且丢在了运动场。现在要找到这笔钱就相对比较困难了,因为每一个位置都有一个交叉口。所以找到丢失的钱就会花费更多的时间。

最后,你魔法般地成了世界上最笨拙的宇航员。在太空行走的时候你的现金从口袋中滑落。你很恼怒,花了接下来的一整天去寻找丢失的现金。现在你是在真空的三维空间去寻找丢失的现金。相比之前的情景,这需要更多的时间和资源,可以理解,休斯顿的家伙不太乐意做这事。


幸运的是,有一个事实很明确:随着维度的增加(通常会超过三维),寻找方案和相关的区域(也就是说现金在什么地方)需要更多的时间和资源。这一点在人和计算机上都是适用的。另一个重要的问题是,你需要更多的数据来对高维空间进行建模;随着维度数量的增加,空间的体积会呈指数增长,以至于有效的数据会变得稀疏,所获的数据很难支撑起一个具有统计意义的模型,因为所有的数据点在很多维度中以及在很多方式下都是不相似的。


对于进行机器学习实践的人而言,降维是一个重要的话题,因为高维度会导致较高的计算成本,以及数据过拟合的倾向。了解了这一点之后,我们开始解释这个命名适当的主题——维度诅咒,它指的是以某种方式计算高维度数据集的时候出现的现象。


降维是什么呢?


在降维的时候,我们希望减少数据集的维度。维度数量越大,就越难进行可视化,这些特征都是有关联的,所以高维数据也增加了数据集中的信息冗余。



图中哪个是将三维的红色数据降维到二维的最好方式呢(绿色、紫色或者蓝色)?进行特征选择之后,所有的轴都形成了不同的形状,丢弃了与其他形状相关的信息。


最简单的降维方法也许就是去选择一个能够最好描述数据的特征子集,丢弃掉数据集中的其它维度,这被称作特征选择。很不幸的是,这貌似是在丢弃信息。


一个稍微好一些的解决方案是将数据集转换为一个较低维度的数据集。这个方法被称作特征提取,它是这篇文章的重点内容。


数据


作为一个音频控,我觉得尝试给音频文件(每个音频文件都可能具有任意长度)降维是比较合适的,将它降到一些数值,以便它们可以用二维图画出来。这使我们能够去探索一个音频库,并有希望快速地找到相似的声音。在 Python 中,我们可以使用 librosa 库得到音频 PCM 数据。下面我们循环遍历了一个文件夹中的样本,将所有 wav 格式文件中的音频数据加载进来。


import os import librosa directory = './path/to/my/audio/folder/' for file in os.listdir(directory):  if file.endswith('.wav'):      file_path = os.path.join(directory, file)      audio_data, _ = librosa.load(file_path)

使用 Librosa 从一个路径中加载音频。


在这个项目中,主要思想就是将样本加载到内存中,并从音频中创建特征序列。这些特征就会以下面所示的方式进行处理,所以我们并不用在意特征序列有多长。随后,特征可以用某种方法被降维,例如 PCA。


我们可以用很多方法将一个 PCM 数据的数组转换成可以更好描述声音的形式。我们可以将声音转换成随时间变化的频率信息,例如频谱中心频率或者过零率这些参数。但是接下来我们要剖析一个在语音识别系统中使用最广泛的具有很好鲁棒性的特征--MFCC(梅尔频率倒谱系数)。


MFCCs


MFCC 实际上也可以被视为一种降维的形式;在典型的 MFCC 计算过程中,你需要传递一段段的 512 个音频样本(这里指的是离散的数字音频序列中的 512 个采样点),然后得到用来描述声音的 13 个倒谱系数。尽管 MFCC 最初是被用来表征由人类声道所发出的声音的,但是结果证明这是一种在不同音质、基音下相当稳定的一种特征,除了自动语音识别之外,它还有很多其他应用。


在提取 MFCCs 的时候,第一步就是从我们的音频数据中计算傅里叶变换,傅里叶变换将时域信号转换成频域信号。在实际过程中是通过快速傅里叶变换来实现的,这是我们这个时代的一个很伟大的算法。

将时域信号转变成频域信号


现在我们取刚刚计算得到的频率信号的能谱,然后在能谱上应用梅尔滤波器组。这很简单,就像将每个滤波器中的能量求和一样。与待测音调的实际音高(通常意义上的 Hz 频率)相比,梅尔频率与预调的感知频率更加相关;我们对低频声音的微小变化比高频声音信号更加敏感。对能谱使用这种 Mel 滤波器组,更接近于人类的实际的听觉感知。


然后我们对每一个滤波器得到的能量求对数,这是由于人类对响度的听觉感知并不是线性的。意味着,如果一段声音刚开始就很响,那么之后音量上的大的变化听起来也不会那么不同。


自然对数函数图像


最后一步就是计算一个被称为倒谱的量。倒谱就是谱的谱。就是给梅尔滤波器组处理过的能谱的对数进行离散余弦变换(DCT),这为我们给出了能谱的周期性规律,可以从中看到频率本身是如何快速变化的。离散余弦变换(DCT)和离散傅里叶变换 (DFT) 类似,只是它返回的是实数(浮点类型)而不是具有虚部的复数。


虽然对 MFCC 做一个概述也是很好的,所幸 Python 中的 libora 库允许我们只用一行代码就能计算出特征,这要比本文的作者描述的过程稍微简洁一些。



import librosa sample_rate = 44100 mfcc_size = 13 # Load the audio pcm_data, _ = librosa.load(file_path) # Compute a vector of n * 13 mfccs mfccs = librosa.feature.mfcc(pcm_data,                           sample_rate,                           n_mfcc=mfcc_size)

使用 Librosa 计算 MFCC。


Wavnet 和神经音频合成(NSynth)


Google 的 Magenta 项目是一个针对这个问题的小组:机器学习能够被用来创造引人注目的艺术和音乐吗?巧妙地避开了可计算的创新性中的未定义、空洞的问题之后,他们设计出了一些很酷的生成工具,可以生成多种形式的媒体,例如图像和音乐。



图为 Wavenet 的扩张一维卷积(dilated one dimensional convolutions)


Deepmind(Google 的另一个子公司)创建了一个令人印象深刻的神经网络,它叫做 Wavenet。Magenta 将这个生成模型转变成了一个自动编码器,创建了新的网络即 NSynth。


你可能之前没有接触过自动编码器,它们只是一种简单的神经网络,经常被用在无监督学习中。自动编码器的通常目标是学习到对某个数据的高效编码,通常是为了降维,而且越来越多地用在生成模型中。自动编码器的共同特征是它的结构;它由两部分组成—编码器和解码器。通常(但不是全部),解码器的权重和偏置是编码器的相关参数的转置。


正如我所提到的,自动编码器的目标经常是将输入压缩到一个更小的隐变量。然而,这里的 Z 是一个低维向量,即输入音频的一个函数。


NSynth 的架构。注意,左边还是像 Wavenet 一样的扩张卷积。这个项目利用的低维向量 Z 大概在编码器和解码器的中间。


使用这个网络是很简单的。首先,安装 Magneta(TensorFlow 的代码),然后下载这个模型的权值(http://ift.tt/2jbmwq7


from magenta.models.nsynth import utils from magenta.models.nsynth.wavenet import fastgen def wavenet_encode(file_path):  # Load the model weights.  checkpoint_path = './wavenet-ckpt/model.ckpt-200000'  # Load and downsample the audio.  neural_sample_rate = 16000  audio = utils.load_audio(file_path,                           sample_length=400000,                           sr=neural_sample_rate)  # Pass the audio through the first half of the autoencoder,  # to get a list of latent variables that describe the sound.  # Note that it would be quicker to pass a batch of audio  # to fastgen.  encoding = fastgen.encode(audio, checkpoint_path, len(audio))  # Reshape to a single sound.  return encoding.reshape((-1, 16)) # An array of n * 16 frames. wavenet_z_data = wavenet_encode(file_path)


特征预处理


这个数据集中的所有样本都具有不同的大小,在下面的控制台输出的第五列中可以看到。


ls -lah ./audio_dataset/ ... -rw-rw-r-- 1 tollie tollie  3.8M Jun 28  2014 HAL9K - Long Sustained Note.wav -rw-rw-r-- 1 tollie tollie  2.7M Jul  2  2014 HAL9K - Lost Soul.wav -rw-rw-r-- 1 tollie tollie  7.5M Jun 29  2014 HAL9K - Low Long Tail.wav -rw-rw-r-- 1 tollie tollie  3.8M Jun 28  2014 HAL9K - Low Short.wav -rw-rw-r-- 1 tollie tollie  4.6M Jun 28  2014 HAL9K - Low Thump.wav -rw-rw-r-- 1 tollie tollie  4.6M Jul  2  2014 HAL9K - Lute 1.wav -rw-rw-r-- 1 tollie tollie  7.7M Jul  2  2014 HAL9K - Lute 2.wav -rw-rw-r-- 1 tollie tollie  4.9M Jun 28  2014 HAL9K - Mechatronic.wav -rw-rw-r-- 1 tollie tollie  2.4M Jun 28  2014 HAL9K - Metal + Delay.wav -rw-rw-r-- 1 tollie tollie  4.8M Jun 28  2014 HAL9K - Metallic Hiss.wav -rw-rw-r-- 1 tollie tollie  5.7M Jun 28  2014 HAL9K - Mysterious Revelation.wav -rw-rw-r-- 1 tollie tollie  5.7M Jul  2  2014 HAL9K - Piercing.wav -rw-rw-r-- 1 tollie tollie  2.0M Jun 28  2014 HAL9K - Room 237.wav -rw-rw-r-- 1 tollie tollie  2.7M Jun 28  2014 HAL9K - SciFi 1.wav -rw-rw-r-- 1 tollie tollie  4.1M Jun 28  2014 HAL9K - SciFi 2.wav


当我们为这些样本计算特征的时候,不管是 MFCCs 还是 NSYTH,样本大小不一导致最终的特征序列的长度也不同。可以这么说,我们在这个项目中面临的问题是取可变长度的特征,将它们压缩为一系列的数字向量,最终得到能够较好描述这段声音的向量。


最后,每段声音的特征向量会是以下三部分的拼接。首先是平均特征,它给我们提供了一段声音的特征序列中的平均值。这意味着,每一个维度的特征都被计算了平均值。对于 MFCCs 而言,平均特征的维度是 13,NSynth 是 16。


第二部分是所得特征中每一维的标准差。它和平均特征有一样的大小(维度),它告诉了我们特征分布的扩展。


最后一部分是相邻两帧特征之间的一阶差分的均值。这一部分反映了特征随时间变化的平均值。同样,该值在 MFCCs 对应的维度是 13,Nsynth 是 16。


对特征的这种拼接意味着,从端到端的角度,对于任意长度的任意样本而言,都能将它压缩到一个固定长度的特征,如果使用 MFCCs,那么这个特征的维度就是 39,如果使用的是基于 Wavenet 的网络,那么这个特征的维度就是 48。给定一个任意长度和特征维度的 numpy 数组,对其计算某个长度的特征向量的代码如下所示:



import numpy as np # Create some random MFCC shaped features as a sequence of 10 values feature_sequence = np.random.random((10, 13)) # Get the standard deviation stddev_features = np.std(feature_sequence, axis=0) # Get the mean mean_features = np.mean(feature_sequence, axis=0) # Get the average difference of the features average_difference_features = np.zeros((16,)) for i in range(0, len(feature_sequence) - 2, 2):  average_difference_features += feature_sequence[i] - feature_sequence[i+1] average_difference_features /= (len(feature_sequence) // 2) average_difference_features = np.array(average_difference_features) # Concatenate the features to a single feature vector concat_features_features = np.hstack((stddev_features, mean_features)) concat_features_features = np.hstack((concat_features_features, average_difference_features))


PCA


降维算法的首选是标准的线性代数算法--主成分分析。我想起了 Rebecca Fiebrink 博士,他教过一个很棒的机器学习课程(http://ift.tt/2BupD33 PCA)之前就直接跳到更复杂的算法(例如 t-SNE)上去。


PCA 通过最大化数据方差的同时降低数据的维度。它将数据转换成线性不相关的变量(就是所谓的主成分)。假设我们想得到这些数据的二维图,那么我们就会使用具有最大方差的两个主成分来揭示数据中的结构。如果你想更深一层地理解它,可以看一下我写的关于用 numpy 来进行线性代数算法的实现及其解释。


我们可以很容易地实现特征的 PCA 计算:


from sklearn.decomposition import PCA from sklearn.preprocessing import MinMaxScaler def get_pca(features):  pca = PCA(n_components=2)  transformed = pca.fit(features).transform(features)  scaler = MinMaxScaler()  scaler.fit(transformed)  return scaler.transform(transformed) my_array_of_feature_vectors = ... scaled_pca = get_pca(my_array_of_feature_vectors)


注意,最后的输出是进行缩放了的。我们将会在绘制的每一副图中这样做,从而可以在我们的交互式网页应用图中插入结果。


那么,最后的图长什么样呢?我们实际上有两个数据集,一个是基于 Wavenet 的特征,另一个是 MFCC 导出的特征。所以下面的二维图中的每一个点都代表一个音频文件。这是基于 Wavenet 的特征图:


这是 MFCCs 的特征图:



有趣的是,这两张图在两种类似的样本上都有一小部分的聚集,就是踢球的声音或者短暂的敲击声,通常在这种信号中有着低能量的末尾。估计这两种特征向量能够较好地区分这种类型的声音。


在这两张图上我们可以粗略总结,y 轴代表的是频率;如果你尝试在网页应用的图上从上至下移动鼠标,踩钹等高频声音出现在上边,敲击等低频声音出现在下面,同时,中等能量的鼓掌等声音出现在中间部分。


t-SNE


下一个降维算法是 t 分布的随机近邻嵌入(t-SNE/t-Distributed Neighbour Embedding),这个算法是由 Laurens van der Maaten 和神经网络先驱 Geoffrey Hinton 共同设计的。


t-SNE 算法有两个阶段。它首先在高维对象对中构造一个概率分布,这样就更有可能找到相似的对象。为了获得这些高维对象的低维表征,它为低维映射构造了一个类似的概率分布。然后两个概率分布之间的散度被最小化。这个散度,或者是相对熵,被称作 KL 散度。

用 Sklearn 计算 t-SNE 向量很容易。



from sklearn.manifold import TSNE from sklearn.preprocessing import MinMaxScaler def get_scaled_tsne_embeddings(features, perplexity, iteration):  embedding = TSNE(n_components=2,                   perplexity=perplexity,                   n_iter=iteration).fit_transform(features)  scaler = MinMaxScaler()  scaler.fit(embedding)  return scaler.transform(embedding) tnse_embeddings_mfccs = [] tnse_embeddings_wavenet = [] perplexities = [2, 5, 30, 50, 100] iterations = [200, 500, 1000, 2000, 5000] for perplexity in perplexities:  for iteration in iterations:      tsne_mfccs = get_scaled_tsne_embeddings(mfcc_features,                                              perplexity,                                              iteration)      tnse_wavenet = get_scaled_tsne_embeddings(wavenet_features,                                                perplexity,                                                iteration)


t-SNE 函数只需要一小部分参数,这里有很棒的解释:http://ift.tt/2jalvPa t-SNE 应该优化多少次。迭代量会在每个相连的行中相继增加。迭代量对图的影响很大,使用 Wavenet 特征,我们可以在下图可以看到:


基于 MFCC 特征的图在下面:



显而易见,对于两个特征数据集而言,当迭代量太小的时候,最终的解并没有得到充足的优化(两幅大图中的第一行就是这样的情形)。在 distill 中关于有效使用 t-SNE 的文章中特别地指出了这一点。


在更多次数的迭代时,出现了一些声音的聚类。然而,对于两个特征集而言,有时候局部的结构没有相似的声音。而全局结构经常能够表现出声音的趋势--也就是说,图中的一大部分中,大多数是敲击声,而另一部分是踩钹等声音。困惑度貌似对算法没有很大的影响,这在相关文献以及 sklearn 的文档中都有很好的表述。


UMAP


均匀流形近似和投影(UMAP/uniform manifold approximation and projection)是一种降维技术。它已经产生了一些相当激动人心的结果,我强烈建议你用一下。在 github 页面(http://ift.tt/2BvkPuy


UMAP 是建立在对数据的三种假设之上:


  • 数据在黎曼流形上是均匀分布的;
  • 黎曼度量是局部恒定的(或者说是近似恒定的);
  • 流形是局部连续的(不是全局,而是局部);


基于这些假设,可以使用一个模糊拓扑结构对流形进行建模。通过搜索具有最大可能的等价模糊拓扑结构的数据的低维投影可以找到向量。


umap 的使用是很简单的,因为它的功能设计和 sklearn 的 t-SNE 包很类似。下面是分别为 Wavenet 特征和 MFCC 特征创建向量的代码。


import umap from sklearn.preprocessing import MinMaxScaler def get_scaled_umap_embeddings(features, neighbour, distance):  embedding = umap.UMAP(n_neighbors=neighbour,                        min_dist=distance,                        metric='correlation').fit_transform(features)  scaler = MinMaxScaler()  scaler.fit(embedding)  return scaler.transform(embedding) umap_embeddings_mfccs = [] umap_embeddings_wavenet = [] neighbours = [5, 10, 15, 30, 50] distances = [0.000, 0.001, 0.01, 0.1, 0.5] for neighbour in neighbours:  for distance in distances:      umap_mfccs = get_scaled_umap_embeddings(mfcc_features,                                              neighbour,                                              distance)      umap_wavenet = get_scaled_umap_embeddings(wavenet_features,                                                neighbour,                                                distance)


我还是将得到的向量缩放到 0 和 1 之间,因为图像需要在每个向量之间插入。向量中,缩放并不是重点,就像在 t-SNE 中一样,唯一重要的是和一个点近邻的其它点。在代码中,我们可以再一次看到,一些列表嵌套 for 循环来参数化 UMAP 函数,所以我们可以看到它是如何影响向量的。请注意,列表最左边和最右边的参数设置是不好的参数,作者只是希望看到算法如何运行这样的参数。


Wavenet 特征得到的结果的图像很漂亮,具有有趣的全局结构和局部结构。每一列中为算法给定的近邻数量是一样的,从一系列取值中选择 [5,10,15,30,50]。流形结构的局部近似中具有较大数目的近邻点会导致较好的全局结构,但是会损失局部结构。每一行分别对应着设置好的最小距离参数 [0.000,0.001,0.01,0.1,0.5],这个参数控制着向量可以将数据点压缩到多近。较大的数值保证了数据更均匀的数据分布,而更小的值会确保更精确的局部结构。


MFCC 特征对应的图也是一样的好看。


图中引人注目的是在较低的参数设置下出现的局部结构,相反,当两个参数设置都很高时会出现全局结构。在参数设置相同时,基于 Wavenet 的特征比基于 MFCC 的特征能够更好地保持局部结构。


在交互演示中,以近邻数和距离滑块较小的设置下(1 或者 2)在局部结构中尝试移动鼠标,你应该能够注意到这个算法能够正确地将这些声音聚类在一起。


总结


在很大程度上,每个算法都是有用的,并且参数化算法和绘制两组特征的输出是非常有用的。一个值得注意的说法是关于图的解释性。PCA 似乎是这个领域中最强大的算法,因为它相对简单。容易注意到,y 轴或多或少包含了样本的高频成分,这是一个很好的启示。


确保 UMAP 的距离不是很高,并且近邻数也在一个较低的水平时,可以确定 UMAP 的局部结构是很好的。通常那些拥有较高感知相似度的样本会出现少量的线和聚类。将参数倒过来,换成较大的近邻数和最小的距离数目,这意味着在算法中结合了更多的全局结构,全局结构更加具有说服力,而且从经验上来说,要比 t-SNE 和 PCA 的结构更强大。


Wavenet 特征的结果证明,在和降维技术结合的时候,这些特征确实很鲁棒,很可靠。与 MFCC 特征得到的图相比时,聚类中并没有明显的退化,在其他情况下,与具有相同参数设置的 MFCC 相比,使用 Wavenet 向量实际上还改善了最终得到的图。


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

机器知心

IFTTT

有了工业机器人的加持,阿迪达斯正计划收回中国工厂,还要对标亚马逊

编译 | 王宇欣、王艺

来源 | WIRED

作者 | ANNA WIENER


去年冬天,运动服饰巨头阿迪达斯的快闪店(pop-up store)在柏林一家购物中心内开张。这家精品服装店是 Storefactory 联合实验的一部分。Storefactory 这一名字很符合德国复合名词的惯例,背后的意思一目了然。


这家店只提供一种产品——机织美利奴羊毛衣,当场定制。客户在展厅进行身体扫描,然后与工作人员协商设计专属的定制套头衫。每件毛衣需花费约 250 美元,制作时间仅为几个小时,客户能够隔着玻璃幕墙观看毛衣的制作过程。


据报道,玻璃后面的微型工厂主要由三台工业用针织机组成,这些针织机用类似点阵打印的方式织出毛衣,每日仅能生产 10 件。但是该实验的重点本不在于增加销量,而是希望通过此举衡量客户对于公司即将投资的一系列新概念感兴趣的程度。这些新概念包括数字化设计、本地化自动制造、以及个性化产品。


Storefactory 只是这些想法的一个小尝试,阿迪达斯正在进行更大的实验。2015 年底,阿迪达斯在德国安斯巴赫州开设了一家全新的、高度自动化的制造工厂,距离公司总部约 35 里。


这家被称为 Speedfactory 的工厂把小部分工人与 3D 打印、机器手臂和计算机化针织等技术相结合来制造跑鞋,这些跑鞋过去通常是由中国、印度尼西亚和越南等国家大规模生产的。




该工厂生产的商品面向欧洲市场。由于数字化设计可以被无限次调整,因此机器人可以无缝地针对每一位路跑爱好者进行定制化设计。阿迪达斯把这些新工厂设在离消费者更近的地方,此举看似可以跳出航运延误和费用等问题。


「我们所能提供的就是速度,」阿迪达斯创新组副总裁 Gerd Manz 如是说,「我们可以在几天内对消费者的需求做出回应。」


阿迪达斯声称,Speedfactory 正在「重塑制造业」。媒体的报告也不遑多让。经济学人这样写道:「把生产带回家,这个工厂力图要重塑一个行业。」

2016 年 9 月,Speedfactory 的第一双运动鞋——限量版跑鞋 Futurecraft M.F.G.(专为德国制造)出厂了。为了这款跑鞋的发布,阿迪达斯用一个 3 分钟的预告片进行宣传。该片不仅突出了跑鞋本身,还强调了其制造过程。


一段令人紧张、强烈的电子音乐为整段视频奠定了未来感的基调——计算机键盘上的灰白色残留物、各种数字控制面板、一台橙色的机械臂正在忙碌地工作。当阿迪达斯在柏林放出 500 双 Futurecraft M.F.G. 时,排队购买的人们甚至在街上露宿,500 双跑鞋几乎顷刻售罄。



一面织布墙,用于阿迪达斯总部内部「MakerLab」的实验


除了 Futurecraft M.F.G. 的发布,阿迪达斯又推出了另一个重磅消息:不久之后,将在亚特兰大建立第二个 Speedfactory。制造业的未来从此将会触达美国。


今年十月份,公司发布了一个名为 AM4 的项目—Adidas Made For。这是一系列根据不同输入参数进行设计的运动鞋,并能针对特定城市的需求进行定做。也就是说,这款鞋是围绕当地跑步者所面临的城市挑战而设计的。


在伦敦,许多跑步者会进行步行通勤,他们需要一款在黑夜和下雨天具有高能见度的运动鞋;纽约一直在建设当中,并且整个城市呈规矩的网格状,所以跑步者需要运动鞋能够灵活应对多个 90 度的拐角;旧金山很热并且临海;在上海,初步研究表明人们主要在室内进行锻炼。所有的 AM4 鞋都将在公司的两个 Speedfactory 中制造,并限量发布。


有时候我都被这些搞糊涂了。我的困惑是,市面上大多数还不错的运动鞋都能够应对曼哈顿网格状的街道布局。还有,如果 Speedfactory 的卖点是快速制作并送达,那为什么要用它来生产要从德国运到中国的跑鞋呢?(其实公司的最终的目标是在多地开设 Speedfactory,但不是现在。)


Speedfactory 的概念似乎适合一个更大的经济叙事,但我不确定到底是哪一个。阿迪达斯并不是唯一一家押注定制化的公司;几乎所有的大型咨询公司—麦肯锡、贝恩公司、德勤公司—近期都发布了一份关乎「制造业生存还是灭亡」的报告,描述了「大众化个性定制」是如何成为大势所趋的。


同时 Speedfactory 也大致传递出了分布式制造的梦想,这非常契合即将到来的 3D 打印时代,也从另一个侧面支持了特朗普竞选时做出的不真实的承诺——工厂的工作将回归美国。与此同时,工厂依赖机器人的故事也被当作自动化将取代人类工作这一紧张的论述的论据。


我还怀疑 Speedfactory 是不是一种精心制作的、昂贵的品牌宣传,就像我们现在所处的创新时代中的许多新想法一样。我不能确定围绕 Speedfactory 的那些评论究竟是太乐观还是太悲观,同时我也很好奇这对美国来说意味着什么。


由于亚特兰大的工厂还没开放,所以我去参观了位于安斯巴赫的 ur-Speedfactory—也就是亚特兰大工厂的双胞胎。为了了解美国南部制造业的未来,我跨越了 5800 公里,来到位于巴伐利亚州中部的一片玉米地。



首家开设在德国安斯巴赫州的 Speedfactory,第二家被定位在亚特兰大


阿迪达斯的总部位于纽伦堡外的赫尔佐根赫若拉赫小镇,拥有 22,000 人口,这个小镇之所以出名,是因为它是阿迪达斯和彪马的总部所在地。这互为竞争对手的两家公司分别由阿道夫(阿迪)和鲁道夫·达斯勒两兄弟创立。


传闻二战期间,两兄弟在碉堡里躲避时产生了分歧,进而引发了两家公司的对立。甚至有一段时间,他们的竞争引发了居民的派别划分。赫尔佐根赫若拉赫也被称为「弯颈镇」,因为当地有这样的习惯——在加入对话之前,先低头看看谈话者的鞋子来确定他们的企业和社会背景。


但是在阿迪达斯的园区内,这并不是一个问题,那里的关系一目了然——所有人都穿着阿迪达斯产的运动鞋。阿迪达斯的园区占地 146 英亩,位于一座庞大的前纳粹空军基地上,被称为体育世界。不过,公司内部交流时更喜欢将其描述为旧的美国军事基地。(1945 年该基地被美国军队占据后,于 1992 年被交还给德国政府,5 年后被阿迪达斯收购)。


园区内一些原始的军营仍然存在,并且被改为了办公地。公司的全玻璃封闭式自助餐厅 Stripes 和被称为 Laces 的全镜面棱角分明的办公楼构成了一副奇怪的景象,看起来像是一座具有超高设计感的机场航站楼。在 Laces 内部,玻璃走廊优雅地相互连接,就好像鞋带在鞋子上穿行的轨迹一样。


园区内有一个全尺寸的足球场、一条跑道、一个拳击室和一个户外攀岩墙。有多个用于沙滩排球、篮球和网球的室外场地,这些设施被员工们广泛喜爱。7 月初我造访阿迪达斯总部时,一小群员工正穿着运动鞋在公司园区内认真地跑步,穿过人行栈道跑向林间小路。几乎每个人,不管在不在园区,都穿着阿迪达斯的服装和运动鞋。


圆盘状的机器割草机在草地上穿行,细嚼慢咽。作为犹太人大屠杀中幸存者的后裔,看到数千名身着同一标识的年轻人在前德国空军基地,让我隐隐觉得有些不安,但是这个园区却充满了活力,生机盎然。来自世界各地的员工似乎都很健康快乐。想象一下,让芭蕾舞者穿 Foot Locker 表演胡桃夹子,感觉就是这么奇怪。




与总部体育世界相比,一小时车程外的 Speedfactory 是一个相对特色不那么鲜明的方形工厂。它坐落在上述玉米地中间的一栋白色建筑物内,外部印有阿迪达斯和长期合作伙伴 Oechsler Motion 的标志,由 Oechsler Motion 负责运营。


我和其他游客一起去过一趟,在铺有地毯的大厅中,我们穿上了厚重的橡胶鞋头,这是一种保护措施。由于行动不便,我们一步一步地沿着走廊向建筑物后方慢慢走去。


工厂是白色的,很明亮,和家得宝商店的大小差不多,天花板很高,没有窗户。里面的员工不多,也没有那么多的机器。装配线由三个部分组成—用激光切割工程针织品(机器人负责),成型和缝制(人类负责)以及融合鞋底(协作完成,多步骤,人机联合)。在房间的尽头,一个橙色的机器人手臂高高地立在底座上,底座下面是一个生产颗粒泡沫的机器,手臂正以优雅的、预先设定好的方式运行。


Speedfactory 内部用于生产运动鞋的原材料十分有限,只有一卷卷的工程织物、附着在鞋子外部用于定型的手指宽的半刚性热塑性聚氨酯带、用于阿迪达斯标志性增高鞋底的热塑性聚氨酯白色颗粒、意大利进口的橙色氖气垫、一个据说是为了增加支撑力的「浮动的扭力杆」(看起来像一个双头宫内节育器)。


工作人员一边吹着口哨一边将一个形状奇怪的、激光切割下来的盘状针织物放上传送带。这些东西的轮廓看起来就像是 Darth Vader 的头盔。传送带带着他们滑过一个白色的、带有彩色玻璃的立方形箱子,这个箱子能将热塑性聚氨酯条精确地热熔在织物上。这时,一名工人开着白色叉车缓缓驶过。


另一名工人将盘状织物放回人类操作的缝纫机线上,工人们使用缝纫机将缝隙缝合在一起,形成鞋子的立体雏形,也就是运动鞋的鞋面。然后另一名工人将它们套在一个有两只模型脚的装置上进行拉伸,这两只模型脚的样子好似背后有一个真人在驾驶飞机。


然后工人将脚分开,并放置在一个大型的玻璃容器内。接下来 93 秒内发生的事情只能用戏剧二字来形容了,机器的大门滑下,一道热光从鞋子的脚面上亮起,针织的鞋面与鞋底融合了。在传统的制鞋厂里,这个过程一般都是手工粘合,粘贴结果杂乱且不精确。在这里,这台机器就像是一个新型的高科技简易烤箱一样。最后,还有一个人类工人会为鞋子穿上鞋带。


整个过程令人着迷。当我坐在纽伦堡公共汽车上,头靠着窗户的时候,我意识到我虽然位于阿迪达斯工厂内,但至少 5 个小时没有想到第二次世界大战这样的事情,这是我在德国度过的最好的时光。



收集阿迪达斯鞋子数据的运动捕捉系统


Speedfactory 以及 Storefactory 都是阿迪达斯公司智慧的化身,专注于新技术,被称为 Future 团队—就像运动鞋领域的 Google X 实验室一样。这些机构的规模很小,整个园区 5000 人,只有 120 人属于这两个部门。并且二者对于未来的定义也很保守,只面对 2 到 7 年内的未来。


「我们就像是大公司里面的一家小公司。」喜爱社交,身材高大的员工 Klaus 告诉我。他边说边指着 Future 团队办公室的玻璃门(位于 Laces 办公楼的后面),声音就像是一个屏息的男高音正在低语,同时又充满了感情。从他的语气中,能够感受到这一切都像是拥有魔法一般,「我们尝试推动我们的公司:起来,把你懒惰的屁股挪一下,走进一个新的领域。」他说。


以 Storefactory 为例,Klaus 描述了这个想法如何扩展到全球。用户(user,他叹了口气,他讨厌 consumer 这个单词)在使用过程中仅需一次身体扫描,就能无限次地量身定做服装,并且能够全球送达。「未来,运行模式将变得更加灵活,更加自由。」他说。


在 Future 团队办公室的中心,一只运动鞋被一个小型的工业机器手臂悬吊着,这只机械手臂叫做 LBR iiwa,由德国自动化公司 KUKA 制造。工程师正就其在 Speedfactory 中可能的使用方式进行试验。该手臂专为轻量级、复杂精细的装配工作设计,手臂对触摸反应灵敏,外观呈弧形且线条流畅,就像是皮克斯电影里的东西,或是一个性玩具。


Future 团队的一些工程师提出让我为 iiwa 做一个示范动作。我小心翼翼地以 8 字形旋转着手臂,等着机械臂重复这个动作。但是它一动不动,运动鞋还是静静地挂在上面。其中一个工程师皱了皱眉头,在控制面板上敲了几下。我问他们,这只机械臂能在 Speedfactory 起到什么作用。回答是绝密或者尚未确定,我对 Future 团队提出的很多其他问题也得到了同样的回答。


工程部高级主管 Tim Lucas 说道:「如果你有一个机器人可以用线织就一双鞋,那么你也可以用完全不同的材料制造出一双鞋。」然后他停了下来,「机器人可以在立体空间中工作。因此我们不一定需按照模板剪切布料再进行拼接。很多新的、非常有趣的材料就能发挥作用。」




这时,Klaus 回来了,手里拿了半杯紫罗兰色的饮料,他称其为紫雨——「对 Prince 的回忆,」他解释道,「从园区内的沙冰吧买来的」。当他陪我返回 Laces 时,我们路过了一个类似阁楼一样的 MakerLab,设计灵感来自黑客空间,里面存放了多匹纺织品、材料箱和一排用于缝纫、木工或以及 3D 打印的机器。


在中庭,员工们聚集在一棵大树周围,他们在露天的剧场中在自己的笔记本上敲击着,午餐时间会定期举行 TED 演讲。整个场面就像是一个由运动员组成的初创公司一样。


如今,世界上大多数最有价值、最有影响力的公司都来自美国西海岸,商业界中流传着一个很有力的说法:所有公司要么成为科技公司,要么就承担被淘汰的风险。就像是那句谚语说的——创新或者死亡。Future 团队的成员经常充满热情地讨论他们对研发工作的「开源情怀」。


十月份,AM4 系列推出时,曾释放过一个包含了跑步者和 Speedfactory 的镜头片段,配音演员模仿了宇航员在月球通过微弱无线电连接发送紧急消息时的声音。「运动员数据驱动设计,」神秘的声音响了起来,「算法开源、人类和机器共同创新。」这声音听起来像是在云端,还有点像一个算法产生的硅谷词库。「生产线创新」,它继续说道,「加速制造,把时间从『月』压缩至『小时』。为运动员实现优化。」


这不是阿迪达斯第一次在其产品和品牌上强调自己的技术。


1984 年,公司推出了一款名为 Micropacer 的鞋,这款鞋装有一台小型的计算机用于计算跑步距离、速度和卡路里消耗情况。


同一年,它推出了 Fire,这款运动鞋配有不同密度的可拆卸泡沫垫。近年来,阿迪达斯推出了一系列高科技的独家运动鞋,包括 Futurecraft 4D,这款运动鞋配有「用光和氧气」制作的 3D 打印鞋底。


最近,阿迪达斯正在致力于研究更多稳定的材料并于近期推出了一些由「帕利海洋塑料」制成的产品,原材料是由非盈利组织(帕利海洋)在马尔代夫收集的可回收塑料。



装满公司特有的增高鞋垫的推车


除了产品本身能够感受到的特质,阿迪达斯正在以长远的视角改变消费者对时尚的认知方式。因为运动鞋的生产与亚洲的血汗工厂紧密相连,像阿迪达斯和耐克这样的公司早已对外淡化了他们产品的起源故事。但是随着可持续化、机器人和个性化产品的向前推进,阿迪达斯正在鼓励消费者不仅要考虑穿的鞋来自何方,还要为公司的精神与情怀额外买单。


由于增高鞋垫已经在更传统的工厂中进行生产,比如中国的工厂,而且产量要高得多。这些增高鞋垫不需要在 Speedfactory 中制作。在高科技环境下成产原本能在其他地方的产业链上生产的东西,让我觉得不是在优化产能,而是在讲故事。为了让产品笼罩在科技的光环内,或者至少科技美感的光环内。


亚特兰大的 Speedfactory 今年年底开张,将带来约 160 个新的就业岗位。公司的规划是这样的:Speedfactory 的机器人不会替代人类,而是为「技艺高超的」工人提供工作机会。工作包括质量检查员、裁缝、具有机器人经验的流程工程师、可以熟练加工的技术人员。Speedfactory 将会生产约 50 万双鞋(仅占阿迪达斯 3 亿年产量一小部分)。至少在短期内,Speedfactory 的运动鞋更可能会卖给愿意为限量版运动鞋支付 260 美元的小型受众群体。


一些经济学家相当看好 Speedfactory 这样的想法并且将其视为更大趋势的开端。华盛顿进步政策研究所,首席经济策略师 Michael Mandel 提到大规模外包到亚洲的生产时表示「我们终于摆脱了过去 20 年来一直存在的生产陷阱。」


大规模的自动化终于可以代替便宜的外国劳工,这自然会使工厂向更接近消费者的地方建设。随着制造业从海外大规模生产转移到定制的本地制造,将会有新的就业机会向人类开放,其中一些机会还没有显露出来。Mandel 说:「过去我们一直是分销围绕生产进行,而现在我认为生产将围绕分销而建立。」


然而,目前看来,阿迪达斯还没有足够的理由放弃其全球供应链。近年来,公司做的非常好:2017 年第二季度,销售量增长了 21%,其中大部分由于公司站在了其主要的竞争对手耐克的上风。


康奈尔大学产业关系教授 Sarosh Kuruvilla 评论道:「如果你是耐克和阿迪达斯,你会从许多工厂和国家的分包中赚取足够的收益,那么改变周围事物以及投资自动化产业链就不是那么紧急的事了。人们喜欢谈论技术如何改变世界,关于这件事情众说纷纭。但同时人们需要仔细观察经济的行进规律,我认为这是一个非常缓慢的过程。」


事实上,Kuruvilla 不太愿意将 Speedfactory 视为美国制造业大规模变革的预兆,更愿意将其看作是公司试图跟上消费者诉求的方式。这些诉求不是由历史性的竞争对手比如耐克设立的,而是在时尚和科技公司比如亚马逊中存在的趋势。


Kuruvilla 指出,如果如今的消费者们都期待快速的配送以及丰富的选择,这将部分归功于 Amazon Prime。换句话说,Speedfactory 就是阿迪达斯试图发展快速交付定制产品能力的尝试。阿迪达斯已经尝试在鞋中嵌入芯片—这种方法有一天可能会收集消费者行为的数据,并反过来馈送更多的定制设计。


截止今年春天,亚马逊已经拥有大量有关购买和消费习惯的数据,和一条直接与消费者沟通的线路,并获得了生产定制化服装的制造系统专利。这正是阿迪达斯 Future 团队正在奋斗的目标,在很多方面,Future 团队都希望能够超越亚马逊。



阿迪达斯使用踢球机器人在其总部进行产品测试


在我造访期间,阿迪达斯的首席信息官,Michael Voe­gele 提到了亚马逊的专利并将运动服装行业与出租汽车和酒店行业的在职者进行了比较。「我们不想被外界扰乱,」他说,以解释 Speedfactory 存在背后的一个动力。


「当我看到一家家公司被这家基于云服务提供非法交易的大型在线交易市场(编者注:指亚马逊)打垮的前景时,我很清醒。这家公司的算法甚至将充气家具与文学翻译一起进行推荐。」Voe­gele 说。


科技行业的幽灵日益显现,它既是服装业的一种渴望也是一种威胁。当我走在纽伦堡的鹅卵石道路上时,回想起 Voe­gele 的评论,我感到一阵悲伤和同情,这两种感情我从未站在公司的立场体会过。


我们今天谈到的所有的技术进步,所有的能够优雅处理 90 度转角的运动鞋,所有关于创新、关于海洋塑料、关于 3D 打印鞋垫的讨论都具有太多的不确定性。我想知道我们是不是都在做同样的事情:努力在未来找到一个立足之地,然后尽可能长久地保持自己的位置。


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

机器知心

IFTTT

这一次,谷歌AI的「后代」在ImageNet上击败了人类选手

编译 | Edison Ke、王艺

来源 | Futurism

作者 | Dom Galeon、Kristin Houser 


2017 年 5 月,谷歌大脑研究人员宣布创建了 AutoML,该 AI 系统能够创造自己的 AI 系统。最近,他们决定让 AutoML 攻克迄今为止对它来说最大的挑战,令人惊讶的是,AutoML 创造了一个非常厉害的「后代」,它的表现甚至超过了所有人类设计的 AI 系统。


为了实现机器学习模型的设计自动化,谷歌研究者采用了增强学习的方法。AutoML 作为神经网络控制器,为一个特定任务开发子代 AI 网络。这个被研究人员称为 NASNet 的子代 AI 的任务是在视频中实时地识别物体,包括人、汽车、交通灯、手袋、背包等。




AutoML 会评估 NASNet 的性能,并利用这些信息来改进它的子代 AI,这个过程要重复数千次。研究人员在 ImageNet 图像分类和 COCO 对象检测数据集上对 NASNet 进行了测试,结果表明 NASNet 的表现优于所有其他计算机视觉系统。谷歌研究者将上两个数据集称为「计算机视觉领域中最受尊敬的两大学术数据集」。


研究人员表示,NASNet 在 ImageNet 的测试集上预测图像的准确率达到了 82.7%。这比之前公布的最佳结果高出 1.2%,而且系统的效率也提高了 4%,平均精度(mAP)为 43.1%。另外,对于移动平台上所需要的算力要求较低的 NASNet 版本,表现还是比同样规模的手机平台要好 3.1%。


机器学习让许多 AI 系统拥有了执行特定任务的能力。尽管它背后的理念解释起来相当简单——一个算法通过输入大量的数据来学习,但建造 AI 系统的过程还是需要花费大量的时间和精力。通过将制造精确、高效的 AI 系统的过程自动化,一个可以创建 AI 的 AI 将解决很多问题。AutoML 的终极意义是可以将机器学习和 AI 领域的大门向非 AI 专家开放。


具体到 NASNet 来说,由于社会潜在需求巨大,精确高效的计算机视觉算法是非常受欢迎的。正如一位研究人员所建议的那样,NASNet 可以被用来制造精密的、以 AI 赋能的机器人,或者帮助视力受损者恢复视力。NASNet 还可以帮助设计师改进自动驾驶汽车技术,提高车辆的安全性。因为自动驾驶车辆识别障碍物及危险越快,就能越快地对突发状况做出反应。


谷歌研究者坦言,NASNet 将被应用于各类应用程序,他们将 NASNet 开源,用户能够通过 NASNet 实现图像分类和对象检测。研究人员在谷歌博客中写道:「我们希望能够在这些模型上建立起更大的机器学习社区,以解决我们还没有想到的许多计算机视觉问题。」


虽然 NASNet 和 AutoML 的应用丰富多彩,但能够自己创建 AI 的 AI 确实引起了一些担忧。例如,如何阻止母代 AI 将无用的偏见传递给子代?万一 AutoML 创建系统速度过快,以至于社会无法跟上它的步伐怎么办?不难看出,在不久的将来,NASNet 可能会被配置自动监控系统,甚至这种监控系统的诞生要比相关法规的出台还要早。


值得庆幸的是,全球的领袖企业正迅速采取行动,以确保这些系统不会导致任何形式的反乌托邦式的未来。


亚马逊、Facebook、苹果以及其他几家公司都是「造福人类和社会的 AI 合作组织」(Partnership on AI to Benefit People and Society)的成员,该组织希望以领先的视角为 AI 的发展负责;电子和电子工程师协会(IEEE)已经提出了 AI 的道德标准;谷歌母公司 Alphabet 旗下的研究公司 DeepMind 最近也宣布成立了一个专注于 AI 的道德和伦理问题的小组。


公司层面之外,各国政府也在制定法规,防止 AI 被用于如制造自动武器等危险的目的。只要人类继续控制 AI 发展的总体方向,一个能够创建 AI 的 AI 所带来的好处会远远超过潜在隐患的威胁。


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

机器知心

IFTTT

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

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