使用机器学习为颜色命名

词嵌入技术使神经网络模型能够学习颜色和语言之间一些非常有趣的关系。
342 位读者喜欢这篇文章。
Colorful deployments: An introduction to blue-green, canary, and rolling deployments

Internet Archive Book Images。由 Opensource.com 修改。CC BY-SA 4.0

最近一次去密歇根州的旅行中,我的朋友 Tim Sosa 提到了他读到的一篇 博客文章,作者 Janelle Shane 在文章中描述了她如何构建一个神经网络,该网络从 RGB 值生成颜色名称。我认为这个想法非常棒,但我发现结果平平。很多颜色名称都很荒谬(即,不是实际的词语),并且生成的名称和颜色之间的配对看起来非常随机,因此不清楚该模型是否真的在学习将颜色映射到语言的有意义的功能。我想知道这个想法是否可以改进,因此,完全使用开源软件,我构建了一个模型来尝试;该项目的代码可以在 我的 GitHub 上找到。

关于 颜色数据,我注意到的第一件事是只有大约 1,500 种命名的颜色,因此 Janelle 使用的数据和我发现的数据之间存在差异。(这是一个例子,说明在做非平凡的事情时,为什么 开放科学 很重要!)我怀疑该模型主要试图从数据中学习字符级语言模型,因此无论是有 1,500 种命名颜色还是 7,700 种,这绝对不足以学习任何关于英语语言的有意义的东西。

考虑到这一点,我决定构建一个模型,使用预训练的词嵌入将颜色映射到名称(反之亦然)。(我使用了 这些 word2vec 嵌入。) 使用预训练的词嵌入的优势在于,模型在训练期间不必学习太多关于语言的知识;它只需要学习不同的名词和颜色如何映射到 RGB 空间,以及形容词应如何修饰颜色(例如,“Analytical Gray”)。有关词嵌入以及它们为何有用的更多信息,请查看我的 表示学习简介

使用这些词嵌入,我构建了两个不同的模型:一个将名称映射到颜色,另一个将颜色映射到名称。学习将名称映射到颜色的模型是一个直接的 卷积神经网络,并且它似乎工作得很好。

以下是模型认为的“红色”、“绿色”、“蓝色”和“紫色”的示例。

Red, green, blue, and purple

opensource.com

但是该模型也知道比这些更有趣的颜色。例如,它知道“深紫色”是紫色的较深版本。

Purple and Deep Purple

opensource.com

它也知道“海洋”是一种水蓝色,而“平静的海洋”是一种较浅的水蓝色,而“暴风雨的海洋”是一种灰色紫色。

Ocean, calm ocean, and stormy ocean are different shades

opensource.com

学习将颜色映射到名称的模型是一个 循环神经网络,它将 RGB 值作为输入,并尝试预测词嵌入作为输出。我决定与其生成单个颜色名称,不如生成候选词更有趣/有用,这些候选词随后可用于提出颜色名称。例如,当向模型提供 161、85 和 130(一种紫红色)的 RGB 值作为输入时,它生成以下内容

fuchsia

opensource.com

词语 #1 候选词

roses_hydrangeas
lacy_foliage
tussie
sweetly_fragrant
coppery_pink
grevillea
oriental_poppies
maidenhair_ferns
oak_leaf_hydrangea
blue_hydrangeas

词语 #2 候选词

violet
lavender_flowers
wonderfully_fragrant
fuchsia
anise_hyssop
monarda
purple
purple_blooms
cornflowers
hibiscuses

词语 #3 候选词

purple
pink
violet
fuchsia
roses
purple_blooms
lavender_flowers
lavender
Asiatic_lilies
monarda

词语 #4 候选词

roses
purple
pink
red
violet
fuchsia
violets
Asiatic_lilies
purple_blooms
flowers

我个人喜欢“sweetly fragrant fuchsia”(甜香紫红色)。

同样,当向模型提供 1、159 和 11(一种鼻涕绿)的 RGB 值作为输入时,它生成以下内容

Green

opensource.com

词语 #1 候选词

greenbelt
drainage_easements
annexations
Controller_Bud_Polhill
Annexations
Buttertubs_Marsh
sprigging
easements
buffer_strips
Growth_Boundary

词语 #2 候选词

green
jade
blues_pinks
purples_blues
greeny
sienna
plumbago
sage_Salvia
olive
purple_leaved

词语 #3 候选词

green
plumbago
purples_blues
allamanda
greeny
purple_leaved
lime
hibiscuses
sage_Salvia
blues_pinks

词语 #4 候选词

green
pineapple_sage
plumbago
purple_leaved
allamanda
hibiscuses
lime
snowberry
sage_Salvia
purples_blues

我个人喜欢“sprigging green”(嫩枝绿)。

无论如何,词嵌入似乎使模型能够学习颜色和语言之间非常有趣的关系。

正如 我之前讨论过的,在 21 世纪进行机器学习的伟大之处在于,有大量的开源软件和开放教育材料可供入门。这意味着任何人都可以阅读 Janelle 的原始博客文章,对如何更改模型有一个想法,并且 可以很好地开始实施更改。

也许您对如何调整我的模型有一些想法?如果是这样,请务必在评论中链接到任何 forks

User profile image.
Michael 目前是 USDA Agricultural Research Service 的人工智能卓越中心研究员。此前,Michael 获得了奥本大学机器学习博士学位,并且曾经是 Red Hat 的机器学习工程师。您可以在他的网站上了解更多关于他的信息。

1 条评论

机器学习很酷,当我发现它被用于我的智能手机中以实现直观的应用程序启动时,我感到非常惊讶

© . All rights reserved.