使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
场景 1:一幅介绍性图片,与第 1 部分中的图片相似。我们可以看到马莎、小菲、小比在独立的圆圈中,下面有奥塔维,周围还有几个与神经网络相关的图标。标题:了解神经网络。Google AI 出品的在线漫画。图片说明/箭头:主演马莎,她正逐渐掌握神经网络相关知识。马莎:我想我大概知道即将发生什么了!图片说明:还有小菲
图片说明:和小比
图片说明:以及新登场的奥塔维!奥塔维:嗨!
场景 2:马莎将钥匙插进通往神经网络领域的大门。图片说明:机器学习精彩旅程前情提要…
马莎:下一站:神经网络!
场景 3:马莎推开大门,兴高采烈地大声打招呼。
马莎:HELLO WORL—
场景 4:镜头在马莎身后晃动,我们看到了一幅无穷尽的巨大景象,其中布满互连的节点,景象恢弘壮阔,令人眼花缭乱。旁边似乎还有些烟雾从门里涌出来。马莎的剪影退缩了一步。马莎:哎呀!
场景 5:马莎退回了门外,她用力甩上门,背靠在门上,眼睛睁得大大的,头发乱七八糟。小菲和小比一言不发地看着她。音效:砰!
场景 6:和上一幅图一样,但马莎眼神朝下看着小菲和小比。门后传出一个声音。奥塔维(从门后):抱歉抱歉!刚才没准备好。现在请进来吧。
场景 7:马莎、小菲和小比顿了一下,然后打开一条门缝,探出脑袋张望。
场景 8:一只可爱的小章鱼奥塔维飘浮在一个简单的技术神经元旁边。奥塔维:嗨!我叫奥塔维!让我们从基础知识开始学起吧,可以吗?
场景 9:马莎看上去松了一口气,活动了一下被刚才的巨大景象吓到僵硬的肩膀。小菲和小比向奥塔维挥手示意。
马莎:呼…好的,请吧。我叫马莎。奥塔维:你好,马莎!神经网络由简单的基础组件构成,其中最简单的组件就是“神经元”。哦,你好小菲!你好小比!小菲:嗨。小比:嘿,博士。
场景 10:马莎半跪在图片中,旁边并排展示了两个神经元,一个是生物神经元,另一个是技术神经元,奥塔维正在进行解释。奥塔维:正如它们的生物学名称的含义,这些“神经元”接受多个输入,并将它们结合起来以产生输出。马莎:“输入”是指哪些数据呢…?
场景 11:奥塔维和小比在特征数据列表的上方交谈。奥塔维:几乎任何数据,只要你可以用数字进行表示即可。小比:可以把输入想成电子表格中的属性!
场景 12:小比在用手比划,小菲用后腿把表格踢翻了。小菲:只不过把它翻转过来了!小比:(并非绝对必要。从左到右排列只是看上去更美观…)
场景 13:奥塔维和马莎开始探讨这张水平表,在这张表中,我们可以看到箭头从数据的每一列指向一系列圆形节点(输入)。奥塔维:这就是它的起点 — 输入的第一层。
场景 14:奥塔维飘浮在前述的输入层和图片右侧的简单二元分类(“猫”或“狗”)之间,并指向右方。“猫”被强调。奥塔维:我们的目标是使用该输入层生成的值 — 无论多么复杂 — 在另一端生成一个输出层,以给出一个简单的答案。
场景 15:画面拉远,所有人都出现在一个空白的空间中。奥塔维在微笑,马莎看起来很困惑。奥塔维:就是这样了。有什么问题吗?马莎:…
场景 16:和上一幅图一样,但小菲和小比正在偷笑。小比(音效):噗
场景 17:和上一幅图一样,但马莎疑惑地大喊出声。其余人都开始大笑。马莎:但是,这中间发生了什么呢?!奥塔维:问得好!
场景 18:奥塔维在上方看着一个小的动态分类图标在标准神经网络图的隐藏层中移动…奥塔维:介于两者之间的那些“隐藏层”正在执行一系列简单的[分类]任务,以得出一个复杂的答案。
场景 19:奥塔维向图中这个简单的神经元做手势,其中含有两个带有标签的输入,分别为 X1 和 X2,两个输入均指向标有 sigma (Σ) 的节点。小菲在下方补充解释。奥塔维:每个特征的数值 (X) 都会在神经元中进行简单相加。小菲:总和 (Σ) 有助于确定线的斜率。
场景 20:和上一幅图差不多,但这幅图中输入和总和节点之间的线标有 W1 和 W2,并且粗细程度不同。奥塔维:但是某些特征的权重较高,因此首先应将这些输入的强度进行调整。
场景 21:马莎出现在画面中,指向旋钮设为“低”和“高”的线(第 1 部分中给出了关于旋钮的解释)。马莎:哦!权重就是我们设置的旋钮之一!奥塔维:没错!
场景 22:马莎和奥塔维正在观察这个简单的神经元,图中又出现了一个标有“b”的节点,其从下方计算进神经元的总和。这个节点的线上也有权重。奥塔维:另一个旋钮称作偏差;偏差是相对于总和的偏移,它也可以根据权重进行调整。
场景 23:马莎的文字提示框包含两个动态图,显示了权重和偏差在循环变化时,斜率和 Y 截距的变化过程。奥塔维和小菲在下方搭话。马莎:所以说…调整权重意味着调整斜率…而调整偏差意味着调整 Y 截距?奥塔维:就是这样!小菲:我就说嘛,她学习能力很强的。
场景 24:我们的神经元现在用一条斜线来表示总和节点,而奥塔维指示出了下一步:一条表示激活函数的曲线(S 形线)。小比飘浮在下方,举着一块标语牌。奥塔维:然后,我们将线性分类器压缩为非线性形式,就像 S 型函数一样
图片说明(小比举的标语牌):了解更多。
场景 25:奥塔维飘浮在放大的 S 型图的 Y 截距处,马莎在右下角用手指勾勒图片。奥塔维:此“激活函数”可表示非线性关系…
…并在学习过程中实现更为平滑的调整。马莎:嗯。
场景 26:现在我们可以看到带有全部标签的完整神经元,奥塔维和马莎从下方进行观察。显示出的所有组件故意让人感觉难以应对。标签:节点、权重、边、总和、偏差、激活函数、非线性函数。
(例如,S 型函数、双曲正切函数、Softmax、Swish、ReLU、Leaky ReLU、Diet ReLU、ReLU with Chips、ReLU、Spam、Spam、ReLU 和 Spam。)
奥塔维:以上就是神经元的完整构成。马莎:呀!
场景 27:我们回到简单的三节点神经元,X1 和 X2 为输入,S 形曲线表示激活函数。当奥塔维解释为什么要用回简单视图时,马莎松了一口气。奥塔维:但是,为了简单起见,我们将总和、偏差和激活函数合并为一个节点…
…并用线的粗细程度来表示权重。
马莎:呼…好的,就这么办!
场景 28:单个神经元现在具有连接其节点的动态加权线,以及一条向右移动的新输出线。奥塔维:现在节点就有了输出 —
马莎:哦!
场景 29:神经元 1 与第二个神经元相连。N1 的输出作为 N2 的输入。神经元之间的线仍以动态显示节点之间的信息流。马莎:…一个神经元的输出可以作为另一个神经元的输入!奥塔维:没错!
场景 30:网络不断扩大,图片显示六层互连的神经元,这些神经元之间存在不断流动的动态线网。奥塔维:一个一个不断相连…
马莎:哇哦。
场景 31:在马莎的对话框下方,我们可以看到两个小小的动画方块,这与第一部分中介绍的相同:在其中一个方块里,有一个来回滚动的小球落在曲线底部,另一个方块里,有一条线来回旋转,最终停在 X 和 O 之间,以确定合适的分类轨迹。
小比举着一块标语牌,点击可以跳转回第 1 部分。马莎:所以,当我们使用反向传播算法和梯度下降法*训练神经网络时…
…这一过程会调整这些权重和偏差?奥塔维:没错!脚注(小比举的标语牌):*请参阅第 1 部分。
场景 32:一个具有三个输入的简单神经元,以动态旋钮调整线条粗细以表示权重。奥塔维从上方进行解释,小比把双手举到头顶,马莎盘腿坐在地板上用手比划。奥塔维:我们将这些动态调整称为“模型训练”。
小比:马莎,快看!根本不用我动手!马莎:太酷了,但是我们的工程师要从哪里参与进来呢?
场景 33:马莎用手指着她面前的一个多层节点网络,小菲趴在她的背上插话。小比飘浮在下方。小菲:哦,哪里都行!工程师可以选择合适的架构、调整层或节点的数量、选择激活函数 — 总之可以做出各种决策。马莎:噢。小比:我们将这称为“超参数调节”。
场景 34:马莎和奥塔维在一个图状网格背景前交谈。奥塔维:信息具有结构。一个经过良好训练的神经网络可以帮助你梳理信息结构。
场景 35:马莎和奥塔维在墙上探出脑袋,观察两个小号马莎进行回归(通过数据图绘制趋势线)和分类(绘制一条线将数据分为两组)。奥塔维:这就是绘制回归线和分类线的过程…
只有一两个特征时,这些操作很容易手动完成…
马莎:哈…原来是这样!
场景 36:我们回过头来看电子表格的一侧,图中还显示了一层输入节点。马莎和奥塔维正在观察。奥塔维:但是有多个特征时,就会有多项输入。也就是说 —
场景 37:马莎、奥塔维、小菲和小比突然飘浮在一个扭曲的数据世界中。空中遍布整数和字母,马莎看上去受到了惊吓。小比变得扭曲肿胀。小菲头朝下在一串无尽的数字中走来走去。只有奥塔维看上去泰然自若。
奥塔维:欢迎来到多维世界
这意味着在“A”和“B”之间绘制一条简单的直线几乎不可能!马莎:什…什么??
场景 38:多维视野向画面顶部逐渐淡出。马莎在角落处神情恍惚,而小比看上去很轻松且充满信心。奥塔维:幸运的是,我们可以用数学的方式看待其他维度,并且找到打通该结构的路径。小比:是的,小菜一碟。只需要改变底层拓扑就行了。
场景 39:小比指向一个图形,其中有两条相互缠绕、代表数据的螺旋线。小菲在右边插话。小比:例如,似乎没有直线可以将这两种形状分开,但神经网络可以做到。小菲:这就是那些“隐藏层”的亮点所在了…
场景 40:小比通过三次扭转双手间的数据螺旋线,将它们变成一对可以轻松用一条线分隔开的不规则曲线。小比:神经网络可以转换数据 —
— 拉伸和挤压空间 —
— 但绝不会为了获取答案而将其切段、分解或折叠。
场景 41:奥塔维上方飘浮着一个倾斜的地球图案,其中南极洲被虚线圈了起来,后面标有一个问号。奥塔维在下方的墨卡托投影上绘出了一条直线。奥塔维:这就像在南极洲和其他大洲之间画一条直线…
在地球仪上这似乎不可能…
…但只要稍微转换一下视角,就可以轻松完成!
场景 42:我们可以看到三个节点,这些节点中都有一条线将其中的数据集分隔开,前两个节点(在同一层中)结合在一起就会为输出节点创建一条曲线,从而成功分隔所需的数据集。小比手上举着一块标语牌,上面写着“了解更多”,点击标语牌即可链接至神经网络游乐场演示。奥塔维:如果每个神经元包含不同的线性函数,则将它们组合起来,我们将得到用于实现数据拟合的更复杂的形状。
图片说明/链接(小比举的标语牌):了解更多。
场景 43:马莎看着她的双手间浮动着的一团节点露出窃笑。奥塔维将他的一根触手搭在马莎的肩膀上,看上去有些担忧。马莎:噢!那就是说,有了足够的神经元,无论有多复杂,我都可以拟合任何数据集??哇哈哈…奥塔维:别着急!神经元太多也可能导致过拟合!
场景 44:随着小菲开始缓慢行走,虚线略微向下地从左到右延伸。
小菲:…我们称由一系列峰谷组成的形状为“错误函数”或“损失函数”…
…要使其显现出来,唯一的方法—
场景 45:马莎、小比、奥塔维和小菲在空白画面中交谈。
马莎:是这样啊。那我们为什么要把他们称作“隐藏层”呢?
小比:嘿嘿。这个问题问得好!
奥塔维:是这样的…我们知道输入了哪些特征…也知道输出了什么样的答案…
小菲:我们甚至可以说明隐藏层的工作原理…
场景 46:马莎半跪着听小菲说话,一个复杂的节点网络前映出他们的轮廓。
小比在右边握着一个写有“了解更多”的箭头状标牌,箭头指向小菲的对话框,内容链接至 Cassie 的研究。
小比:但在一个完全连接的神经网络中,每个节点都会将上一层中每个节点的输出结果混合在一起。谁又知道这个神经网络关注的是哪一个“特征”呢?小菲:就像数据科学家 Cassie Kozyrkov 所说,“将不可言说的处理过程自动化”。
场景 47:奥塔维出现在画面右侧,头上戴着顶指挥帽,旁边还有辆小矿车。所有人准备跳进矿车。奥塔维:其实,我们可以把完全连接的神经网络看作一种建筑…
马莎:帽子不错。
奥塔维:谢谢!
场景 48:奥塔维坐在矿车上,身后是一张交通地形图,图上布满了根据网络建筑符号标记的站点。奥塔维:让我们前往神经网络地图上另一个热门站点吧。
场景 49:所有人坐在矿车上驶过弯弯曲曲的轨道,周围环绕着不同的建筑图标。马莎兴奋不已,奥塔维镇定地解释着。
奥塔维:整个场景会不断变化 — 永远“在建设中”。
有些目前很热门的目的地其实是由 10 年前的原型建成的!
场景 50:矿车驶过三个场景,沿着类似于钟面的轨道向前。钟面上数字太小,无法辨认。奥塔维:循环神经网络(例如 LSTM)会反复循环返回自身 —
— 以解决临时元素的问题 —
— 例如语音识别。
图片说明/链接:了解更多。
场景 51:从上方看,矿车穿过一个轨道交汇处。多条轨道汇合又开分。奥塔维一边解释一遍操纵交汇处的开关。“了解更多”链接指向[这里应该放什么链接?]
奥塔维:其他神经网络,例如自动编码器,有助于理解非监督式数据 —
— 减少溢出大数据的维度。
图片说明/链接:了解更多。
场景 52:大家坐在矿车上从画面前部驶过,远处还有其他轨道和矿车。矿车向前开走时,马莎打断了奥塔维,询问其他矿车上的乘客是谁。奥塔维目不斜视,泰然自若。奥塔维:我们即将要到达的网络在分析方面非常热门 —
马莎:嘿,那些人是谁?
奥塔维:哦,那是生成对抗网络 (GAN) 的线路。那些乘客全都不存在!别跟他们产生目光接触。
场景 53:矿车到达一个站台,其拱门上标有“CNNs”的字样。每个人都跃跃欲试想进去看看。奥塔维:我们到了。来看看卷积神经网络 (CNN) 吧!马莎:啊哈,我听说过这个。小比:确实常上热门新闻。
场景 54:所有人走进了一个精致华丽的画廊,墙上挂满了画框,但每块画布上都只有数字 1 和 0。小比被其中一幅画作迷住了,马莎看上去很困惑。小比:我喜欢这幅画!这上面全是“11001101010”,很有规律,你们觉得呢?马莎:呃…
奥塔维:对于 CNN 来说,图片就相当于一个个数字网格!
场景 55:马莎举起其中一张画布,仔细观察上面的数字。奥塔维在解释画上的内容。小比在右下角的声波图上方举着一个麦克风,以演示 CNN 如何解析以可视化方式呈现的数据。马莎:好吧,是不是所有神经网络都是这样处理图片的?
奥塔维:没错!但 CNN 提供了一种独特的方法来解析和获取所有基于图片的数据。小比:(包括可以用图片表示的任何数据类型。)
场景 56:大家围着一张 32 x 32 像素的猫灰度照片观察。
奥塔维:甚至像这样的低分辨率图片也包含着大量信息。
这张图片由 1024 个像素构成,其中每个像素都可以看作一个单独的输入 — 实际上,如果以红、绿、蓝通道进行计算,则为三个输入。小菲:这不是猫叔鲁福斯嘛!
场景 57:奥塔维在画面左侧解释彩色图片的多重性,他的下方是一组分层输入,其中包括红、绿、蓝通道,底下还显示了相应的总输入数量 (3072)。大量输入层在他的右侧不断延伸。马莎大吃一惊。奥塔维:我们来看看多维输入层…这甚至远远不及高分辨率图片或者视频!马莎:天啊!有种似曾相识的感觉!
场景 58:奥塔维在六张与猫有关的图片旁边继续解释,这些图片都是猫的近距离特写,但每只猫的姿势各有不同。左下角有一个显示“猫:是”的分类节点。奥塔维:在处理这类问题时,我们总是希望能获得一个简单的一维答案,即“是”或“否”,但与之对应的算法必须能够成功分辨每只猫,不管它在图片中的哪个位置,姿势如何。马莎:哇哦,这很难做到!
场景 59:小比出现在一个像素矩阵中,其中每个像素块都延伸到右侧单独放大显示。奥塔维:确实。但 CNN 可以将这些巨大的像素数据矩阵逐层分解为可管理的数据块来解决这个问题。
场景 60:奥塔维向马莎扔过去一个带有手柄的小矩阵(过滤器)。奥塔维:首先,在源图片中构建一个猫相关特征的地图。接着!马莎:这是什么?奥塔维:一个过滤器。开始时它是一个随机权重矩阵,但是随着时间的流逝,算法会对它进行调整。
场景 61:小号马莎和奥塔维踮着脚尖穿过两个动画矩阵。第一个矩阵显示了过滤器沿着输入数据一格格移动,第二个矩阵显示了按单元格生成特征地图的过程。[此处为示例。]小菲在右下角露出脑袋插话。奥塔维:“卷积”是指过滤器在整个图片上以可变间距移动,这一间距称为“步长”。
马莎:哦!这其实是将源数据乘以该矩阵!小菲:结果称为“特征地图”!
场景 62:奥塔维戴着游泳圈和太阳镜,解释 CNN 的处理过程。我们可以看到输入图片通过卷积生成了多张更简单的图片,旁边是激活函数,最后是通过 pooling 生成的较小的图片。马莎站在上方,观察整个场景。奥塔维:这些特征地图经过 pooling 来进一步减小其计算量。马莎:那也就是说,你可以继续堆叠它们以寻找更多特征!
场景 63:奥塔维飘浮在空中,右边有四个低分辨率过滤器,分别显示了水平、竖直、左斜线和右斜线四个模糊的边线。小比在下面的方框中插话,他的右手指着一个大脑,大脑上有两个突出的眼球。
奥塔维:在最早的阶段,过滤器只能检测边和方向…*
小比:*有趣的事实:大脑的视觉皮质也是以这种方式启动检测的…实际上,这就是 CNN 的早期灵感来源。
图片说明:了解更多。
场景 64:左侧显示了三个由网格组成的特征层,分别为粗糙的边线、清晰的元素以及完整的人物或图形 — 其中还包含一个小号的奥塔维!真实的奥塔维在画面右侧进行解释。奥塔维:但在随后的每一层中,复合特征都会不断出现。看到了吗?那是我!
场景 65:马莎和奥塔维从上方观察一个闪着光的过滤器。
马莎:这么说,它是从线条和角度开始,随后辨别胡须、爪子和毛皮,最后判断是“猫”还是“狗”?
奥塔维:开始和结尾都对,但中间不对。我们永远无法确切得知 CNN 在中间过程处理了什么特征 —
— 但无论它们是什么,无论藏在何处,CNN 都能找得到!
场景 66:回过头来看我们的 CNN 阶段分解图,但现在末尾补充了一个分类层,显示了一整列节点以及相互连接的线条,最终指向一个二元输出。小菲出现在画面右侧进行解释。小菲:真实的 CNN 并不像我们的第一个示例那样完全连接,但最终输出层是一样的,都会连接到前一层的所有神经元。
场景 67:马莎、奥塔维、小比和小菲站在空白的空间中。他们都被一个方框框了起来,上面显示着对应的网络预测结果。马莎有 98% 的可能是人类,奥塔维有 94% 的可能是章鱼,小菲有 89% 的可能是猫,但小比有 60% 的可能是个篮球。
奥塔维:这个分类层准确辨认出了我们的种类 —
小比:呃,打扰一下?
标签:
98% 人类
99% 章鱼
60% 篮球
89% 猫
场景 68:马莎俯下身子,一脸关心。除了小比以外,所有人身旁的方框都消失了。奥塔维飘浮在上方,看上去很担忧。小比闷闷不乐。马莎:哎呀,这是怎么回事?训练数据中没有飞行机器人吗?奥塔维:应该有的!标签:
60% 篮球
场景 69:小菲和马莎翻看摊在地板上的训练数据和测试数据。小比在后面看上去气呼呼的。小菲:没有!这里只有步行机器人,看来是存在典型的选择性偏差。马莎:这不公平。默认所有机器人都是步行机器人…
小比:不行,不能把我会飞的属性去掉!
标签:
60% 篮球
场景 70:小比和小菲面朝画面左侧。马莎准备站起来。马莎:我总以为数据是无偏差的。就只是“数字”之类的…
奥塔维:数据集包含事物的时间和地点属性。
标签:
60% 篮球
场景 71:奥塔维给他的触角套上了各种各样的袜子玩偶。每个玩偶的气球对话框中都有不同的标志。奥塔维:就算你很努力地创建“中性”数据,编译人员也可能有其固有的偏见,从而产生隐性偏差。
场景 72:马莎坐在一堆数据图片之中。小菲和小比垂头丧气。
奥塔维在画面右侧翻看更多图片。马莎:这比我想的还要复杂。奥塔维:嗯…我们可能同时也在处理潜在偏差…
仔细观察这些篮球照片,找找它们的共同点…
标签:
60% 篮球
场景 73:奥塔维向马莎展示了几张照片,上面都有篮球运动员握着篮球的双手和胳膊。奥特维:看出共同点了吗?马莎:我不知道,我只看到很多胳膊握着—
场景 74:马莎回头看了看标有篮球的方框中的小比,意识到了什么。马莎:哦…原来是这样。标签:
60% 篮球
场景 75:马莎和奥塔维开始讨论。奥塔维:工程师和伦理学家仍在探索神经网络如何理解这个世界—
—以及我们在未来几年中不断创造出的新鲜事物。
场景 76:马莎、奥塔维、小菲和小比站在一面镜子上,低头看着自己的镜像。奥塔维:只需将 CNN 翻转过来,研究人员就可以构建一个无与伦比的图片分类器…
…然后创建对抗生成网络,即 G.A.N.…
…G.A.N. 可以生成非常美丽逼真的图片,也会生成显而易见的伪造品。
图片说明:
了解更多。
场景 77:马莎表情很坚定,奥塔维在鼓励她。小菲和小比在下面插话。马莎:我希望我能解决问题,而不是带来问题…我希望届时我能搞清楚它们之间的差异。奥塔维:嘿,了解了这些工作原理,就等于开了个好头。小菲和小比(画外音):没错!没错!
场景 78:马莎正微笑地望着天空,看起来信心十足,但她的老板马六打断了她。奥塔维表情愤慨。
马莎:等着瞧吧!我有 99% 的信心我可以—
马六(画外音):嘿,马莎!
场景 79:马六趴在他们这个幻想之境的墙头,一边向里面观望一边自说自话。所有人看上去都烦躁不安。小菲发出嘶嘶声。
马六:哦!我这是在哪儿?那是什么?这些人又是谁?马莎:呃,这是—
马六:算了算了,其实我并不在意!
场景 80:马莎靠着小比和奥塔维边上的墙滑坐在地。马六还在喋喋不休,所有人看着都很沮丧。
马六:我需要你在 10 分钟内向股东们做一个演示。奥塔维:他平时也是这样吗?马莎:是啊。
场景 81:马六挥了挥手便消失了。其余人聚拢在马莎周围,她开始振作起来。马六:好了,多谢,再见!奥塔维:亲爱的,我们刚刚学到的信息量可不小啊…
小菲:我去破坏会议室,争取一点时间。
场景 82:奥塔维向后退了退,惊恐地盯着她,但马莎举起一只手阻止了他。奥塔维:早知道我就讲慢一点了!他们会在章鱼学院外面笑话我的!
马莎:不会。
场景 83:镜头拉近马莎,她的神情坚定又兴奋。马莎:我有主意了。
现在该您亲自试试了!
继续您的 机器学习之旅…
场景 84:马莎面对会议室中的董事们,指着一块白板进行演示,白板上画有神经网络和其他可视化元素。所有人都在全神贯注地聆听。我们以行为号召作为结束,鼓励读者了解更多详情。
…参阅 Google 的 机器学习速成课程 或了解 Google Cloud AI !
剧本、设计和布局:Lucy Bellwood、Dylan Meconis、Scott McCloud
插画:Leila del Duca
色彩:Jenn Manley Lee
日语本地化:Kaz Sato、Mariko Ogawa
出品:Google Comics Factory(Allen Tsai、Alison Lentz、Michael Richardson)
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],[],[],[]]