AI听起来很遥远,其实已经渗透到我们的日常工作和生活中。在不远的未来,互联网、大数据、硬件的发展和软件的优化,乃至全社会的参与,人工智能将真正从实验室走进生活,它将成为改变我们生活的一部分。我们吃的肉和动物制品越多,消耗地球资源的速度就越快。AI是否能设计新的方式让素食尝起来更美味,从而帮助人类造出“无肉世界”呢?

目前,一些企业家正寄希望于AI来寻找答案,他们想要生产出类似于口感和质地的东西,使之成为一种真正的牛肉汉堡。肉类并非他们唯一的目标:蛋黄酱、曲奇饼、奶酪、巧克力以及其他所有使用动物原料生产的食品都在他们的视线范围之内。当然,替代肉制品的想法并不新奇,但AI却为其提供了一个更强大、有前景的方法。它允许食品科学家探索新的原料,开发令人惊讶的新食谱,并寻找创新的方法来复制鸡蛋、牛奶和肉类中的美味脂肪和蛋白质。

随着人口和经济的增长,世界上的肉类需求依然在增加。即使在并不富裕的国家,肉类消费也居高不下。据估计,在美国和英国,素食者(更不用说严格素食者)的比例仅为个位数。食品初创公司Hampton
Creek的创始人兼CEO Josh
Tetrick,将一些素食添加到基本数据库中。随后,经人引荐,他开始接触人工智能。强大的机器学习算法可以帮助他用系统的方法找到了新的成分或配方,从而替代肉制品。



寻找替代品的第一步是确定尽可能多的候选目标,这是通过寻找食用植物来完成的。即使是每天吃这些食物的人,也不会有任何可以用来取代猪肉或鸡蛋的暗示。然后是对食物进行分析。研究人员必须弄清楚每种植物成分是由什么组成的,以及每种成分的比例,这需要从分子水平上进行了解。所有这些数据都会传送到数千甚至数百万个条目的数据库,具体取决于分析的详细程度。联合国粮农组织的数据显示,世界上共有25万多种可食用植物,每种植物的变体不计其数。

问题是“化合物之间的相互作用非常复杂”,这意味着许多事情会以不可预见的方式出现问题。好像这个难题不够难,还有这些不同的组件如何相互影响的问题。研究人员需绞尽脑汁处理大量变量,而此时AI恰能发挥作用,它无需逐个品尝来找到答案。虽然AI在第一次没有得到正确的结果,但它在每次犯错时都能吸取教训并进行改善,这通常得益于人类的反溃结果可能令人感到惊讶。

近日,Hampton
Creek公司发现印度豆科“绿豆”中含有一种分离蛋白与炒蛋的特性相似。其中最令人眼花缭乱的配方之一是巧克力产皮:西兰花、枸杞、蘑菇和坚果的奇异组合,但他们不会与我们分享。到目前为止,这些公司已经使用AI的方法来制造乳剂或者液体食品,如蛋黄酱,炒鸡蛋替代品或饼干面团等,但固体食物比较难以模仿。



研究的大目标是取代肉类,两家初创公司都在对这个肌肉问题采用不同的方法。Hampton
Creek正在实验室培养肌肉和脂肪细胞,并正在研究如何以植物为基础的营养素喂养这些细胞。NotCo正在寻找方法来重新创造只有植物成分的肉类。但即使是AI,他们的进步也是非常缓慢的。然而,创造这些新食品只是第一个挑战。说服世界吃它则是另一回事。

饮食倾向还与文化背景息息相关,如果这些新食品只是为了迎合那些操作AI的西方人口味而制定的,那么它们注定会失败。不管这些AI找到了什么奇怪的组合来代替肉、奶酪或鸡蛋,因此口味是否能迎合人们的喜好,人们是否能接受这些新型食物还不得而知。(科技新发现
康斯坦丁/文)

AI能帮我们造出一个无肉的世界吗?的更多相关文章

  1. 一个无锁消息队列引发的血案(四)——月:RingQueue(上) 自旋锁

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  2. 为什么.Net要求序列化的类必须有一个无参数的构造函数

    刚才用xml序列化器,序列化一个类,结果报错说序列化的类必须带有一个无参的构造函数,好奇怪啊.为什么要有这么苛刻的条件,而且xml序列化还要求序列化的成员是public. 我以前一直觉得序列化器是一个 ...

  3. Nah Lock: 一个无锁的内存分配器

    概述 我实现了两个完全无锁的内存分配器:_nalloc 和 nalloc.  我用benchmark工具对它们进行了一组综合性测试,并比较了它们的指标值. 与libc(glibc malloc)相比, ...

  4. 委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。

    1.原始的委托 (.net 1.0) using System; using System.Collections.Generic; using System.ComponentModel; usin ...

  5. 一个无锁消息队列引发的血案(六)——RingQueue(中) 休眠的艺术 [续]

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  6. 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  7. 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  8. 如何实现一个无边框Form的移动和改变大小(一)

    很多时候我们不希望使用Windows提供的窗体. 我们希望使用一个无边框的窗体,什么border,caption透明就行了. 下面我们来说下一些实现方法. 这个方法要求窗体自定义的border siz ...

  9. mybatis实体为什么要提供一个无参的构造函数

    提问:Mybatis查询结果映射到实体类的时候,实体类为什么必须有一个空的构造函数? 类中如果没有构造函数,隐藏是无参构造函数,方便实体类需要通过Mybatis进行动态反射生成.如果实体类中一旦声明构 ...

随机推荐

  1. [YNOI2018]五彩斑斓的世界&CF896E(分块+并查集)

    由于晚上比赛二连(Atcoder&codeforces),外加复习学考,所以暂时没时间写了. 贴个O(n√n)的分块代码,洛谷和cf上都过了,但垃圾bzoj卡不过去,不改了. #include ...

  2. Ubuntu下查看硬盘分区UUID的方法&所有Linux目录樹

    在Ubuntu中UUID的两种获取方法,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样. 在终端中输入下面的命令就可心查看到分区UUID了.命令1.sudo blkid 命令2.ls ...

  3. java合并一个文件夹下所有txt文件,输出到另一个txt

    最近写了个单元测试,递归调用方法,把同一个文件夹里所有的txt合并输出到一个txt文件.参考了两个博客,分别是已有的方法,还有个就是检测txt文件所用编码的技术贴.如果不检测txt文件的编码,那么转换 ...

  4. 吴裕雄--天生自然 pythonTensorFlow自然语言处理:Attention模型--测试

    import sys import codecs import tensorflow as tf # 1.参数设置. # 读取checkpoint的路径.9000表示是训练程序在第9000步保存的ch ...

  5. python学习笔记(30)——ddt

    1.ddt模块包含类的装饰器ddt和两个方法装饰器data ddt.ddt:装饰类,也就是继承TestCase的类. ddt.data:装饰测试方法,参数是一系列的值,用来传递参数 ddt.file_ ...

  6. OfficeidMsoViewer最新版

    点击下载 OfficeidMsoViewer最新版

  7. mediawiki问题

    部分内容参考 http://blog.csdn.net/gaogao0603/article/details/7689670 1.启用文件上传:在LocalSettings.php修改或者增加如下:$ ...

  8. 二十一、NFS服务

    文件系统是基于存储设备的,比如硬盘,并且包含文件物理位置的维护.文件系统也可以说是虚拟数据或网络数据存储的方法,比如NFS.我是这样理解的:首先,什么是文件系统,这里我们已经明确了,就是组织的一种形式 ...

  9. An internal error occurred during: "Redeploy".

    原因:项目中JDK使用的版本与现在使用的JDK版本不同所致. 解决方法:右键选择项目>properties>java Build Path>Libraries 查看下面的JRE Sy ...

  10. hibernate多表查询sql,以及所得对象的处理

    String sql ="SELECT id FROM tea WHERE tea.name=? "; SQLQuery query = this.getSession().cre ...