学习手语的人工智能
LOVE in Sign Language
这个故事开始于马德里西班牙。冬天来了,一个由四个年轻的爱好者组成的团队开始了一个项目。
最初的想法是创建一个学习手语的应用程序,不仅因为这是我们社会的一个有趣的方面,也是为了那些需要学习它来交流的 3400 万患有残疾听力损失的儿童。
技术的美妙之处在于它也可以用来帮助别人。我们的目标正是这样。
当时的主要想法是,构建一个神经网络模型,能够从相机捕捉的图像中实时分类用户所做手势的表示。这个“用户”可以是在家学习手语或巩固他们在学校教他或她的东西的孩子,也可以是对从头开始学习手语感兴趣的成年人,例如,从字母表字母或数字开始。
数据
在每个像我们这样与数据相关的项目中,工作的一个重要部分是数据集。没有数据,我们甚至无法开始尝试构建一个能够理解用户在摄像机前做什么手势的模型。
由于我们来自西班牙,我们首先想到的是为 LSE 开发应用程序。但是研究和创新并不是一条玫瑰色的道路。我们找不到任何与西班牙语字母表相关的数据,在互联网上找不到,甚至没有写信给可能拥有这些信息的实体。所以我们不得不决定使用出现在几个网站上的数据:美国手语。
作为初始阶段,我们开始探索字母和从 0 到 9 的数字。然后我们有了另一个问题。该应用从一开始就被认为是基于构建一个能够从静态图像中分类标志的深度神经网络。这个事实给有运动的字母带来了一个问题:J 和 z。我们决定暂时去掉这两个字母。
然后,我们找到了字母和数字的数据。这些数据实际上是人们手部的图像,取自 Kaggle,一个在我们社区广泛使用的存储库。
型号
第二阶段是训练一个模型,让它变得如此智能,以至于当它看到一个标志的图像时,它能识别出是哪一个。我们从一个卷积神经网络(CNN) 开始,它有几个卷积层,最大池化、扁平化和全连接。但我们从经验中了解到,即使验证准确性很高,验证损失很低,但最重要的是实时性能,用我们的相机,用不同的手和手后面不同的背景。这不是一个好结果。
那时,我们决定利用以前的智能模型,一个能够从图像中分类对象的深度 CNN,用 ImageNet 训练的 VGG19。
Network architecture of the VGG19
ImageNet 是一个大型数据库,拥有超过 1400 万张图片,包含 20000 多个类别,精简版有 1000 个类别。用这个数据集训练了几个模型,使它们能够理解图像中非常抽象和有创造性的部分。我们必须利用这些特性。这个过程在社区中被称为“T2”特征提取。只需采用一个没有顶层的预训练模型,冻结该模型,添加我们的顶层,指定我们想要分类的类别数量,并用我们的数据集对其进行训练。这似乎是一个好主意,但同样,在实时体验中,它并不像我们希望的那样好。
然后,我们后退一步,思考使用预训练模型的想法。用来训练 VGG19 的 ImageNet 数据集不包含徒手类,也不包含 sing 语言表示类。所以我们试图做的是强迫一个网络对一些东西进行分类,而它基本上只能智能地对世界上除了手以外的其他东西进行分类。
那时我们决定进行“微调”,这是另一种在深度学习中经常使用的技术。我们决定只冻结 VGG19 的前 6 层,并用我们的数据集和顶层一起训练其他层。
另一方面,但与此同时,数据集正在经历几次变化。我们意识到初始数据集太差,然后我们给自己设定了用自己的相机获取图像的任务,我们将它们与初始数据集混合,并使用图像的混合来设置一个图像数据生成器,包括一些转换,如剪切范围、宽度和高度的移动等。
有了这两种成分的混合,一个非常强大的数据集和一个超级智能的模型,我们只希望有好的结果。我们抓到他们了。
Example of application with the Sign Language Digits
我们乐于接受对我们最初工作的反馈,因为我们目前正在开发它,以便将来有更好的应用程序来帮助他人。我们在 github 上也有开放代码,链接如下:
[## ecabestadistica/手语翻译-python-opencv
项目的目标是为儿童提供必要的应用程序
github.com](https://github.com/ecabestadistica/sign-language-translator-python-opencv)
我们是 Elisa Cabana ( Twitter )、Jessica Costoso、Jordi Viader ( LinkedIn )和 Miguel Gallego ( GitHub ),在卡洛斯·辛坦拿( Youtube )的帮助下。我们希望有一天技术被用来消除那些需要我们帮助的人的障碍,因为对一些人来说,障碍实际上是所有人的损失。
人工智能在一个“别无选择,只能让它聪明”的能源行业!
可再生能源(RE)热潮为经济、能源部门和应对气候变化带来了巨大机遇。但是,由于其固有的间歇性,单靠可再生能源(如太阳能或风能)仍然无法实现全部需求或减少温室气体的积极目标。此外,对于没有准备的开发人员来说,分布式可再生能源项目的经济性变得越来越有竞争力(也就是说,由于不断变化的环境,变得更瘦和更有风险)。
因此,能源部门面临着一波变革,不仅挑战其增长,也挑战其弹性(例如,见《纽约时报》关于为什么 PG&E 申请破产将允许该公司在电价较高时试图撤销或重新谈判与供应商签订的合同的文章)
简而言之,能源市场正在发生变化,而供应链正变得更具竞争力,大自然给电网基础设施带来了更大的压力。毫不奇怪,客户对控制其能源命运的兴趣正在增加。
对于公用事业、消费者、决策者和经济而言,储能正在迅速引发能源领域的彻底变革。这是一个范式上的实质性变化。这就好比是互联网比电报,或者是 18 世纪的风车比现代的风力涡轮机。
如果利用得当,储能可以独立运行,为客户、公用事业和电网提供多种服务,增加冗余、弹性和能效,即使在可再生能源经济效益不佳的情况下也是如此。此外,能量存储在形成和平滑可变发电和支持不断变化的需求方面的潜力将使能源部门的投标超越当前的电网限制。
智能储能
事实上,由于生产阶段与非生产阶段的不规则交替,能量储存极大地有助于解决与太阳能或风能作为能源的间歇性相关的问题。然而,不仅是这些能源,还有需求方本身的周期性和混沌动态,电池硬件本身对释放真正的能量价值没有什么作用。情况的复杂性使得简单的解决方案或者单一的技术很难成为救世主。释放这一价值的关键是通过复杂的软件对能量存储和(生产-消费)系统的复杂动态特性进行适当的控制。这就是人工智能(AI)形式需要“智能”(而不是简单的控制)的地方。将可再生能源与人工智能驱动的存储结合起来,可能会改变区分未来项目的范式。我们可以称之为“智能储能”或 IES。
优化独立系统
首先,我们可以很容易地看到智能储能如何满足商业和工业对“独立”系统的需求。为可再生能源装置增加存储几乎总是会增加项目的经济价值,主要是通过在客户用电高峰期使用存储的太阳能或风能。但是,为了正确优化系统的规模,并最大限度地提高 RE+存储系统对客户的回报,人工智能开辟了许多可能性,例如:执行实现这些回报所需的预测分析、机器学习、大数据和网格边缘计算。每一秒钟的数据都可以被捕捉和分析,包括负载、发电、天气、附近电网的拥堵和电费。ie 可以推动实时自适应存储调度,为客户和电网创造越来越多的价值。
产生额外的合同收入
其次,IES 还可以提供其他服务,或“价值叠加”额外的合同收入(帮助承包商更好地优化特定项目的报酬)。ie 可以驱动存储在电池网络中的未使用能量的“传送”,作为一种虚拟集成的资源提供给那些需要电力的电网位置。IES(与 is AI 一起)将动员一个可用能源网络来满足某个部门的过度需求,该部门正在经历高需求并使电网紧张。其结果是为提供商带来额外的收入和更低的运营成本,同时为客户带来存储节省能源费用的好处。
增加价值流
第三,随着新的激励和价值流的出现,这些优势将变得更加重要。商业环境变得越来越复杂,包括降低需求费用、通过虚拟发电厂增加收入、应对不断变化的利率和从投资税收抵免中获取更多价值。在确保计划合规性的同时实现回报最大化是一项挑战。这一天不远了,它将变得如此复杂,以至于只有通过人工智能才能实现 RE+存储的全部价值。
人工智能将能够为可再生能源项目提供一系列新的价值流。客户、太阳能开发商、纳税人、公用事业公司和电网都是赢家。例如,将智能存储添加到太阳能项目中可以最大限度地提高投资回报,在面对不断变化的费率、需求方或气候条件时,为主机站点提供更大的控制力和灵活性,同时支持访问新的公用事业项目或批发市场收入机会。公用事业和电网运营商可以从客户所在地的虚拟发电厂签订服务合同,在需要的时间和地点准确地提供稳定、可靠和经济高效的能源。在一些地区,这可能导致避免需要新的调峰电厂或其他昂贵的基础设施。
人工智能供电的储能正在推动“智能”能源系统的崛起。我们已经可以看到,部署了智能存储的风能或太阳能将很快使独立系统的部署相形见绌。当我们将人工智能与再存储结合起来时,我们确保了能源资源正在发挥其全部潜力——这是可再生能源行业、电力行业本身以及客户的最佳前进方式。
总之,这些改进(优化独立系统、产生额外的合同收入和增加价值流)只是人工智能和通过“智能储能”实现的储能将改变能源行业的众多方式中的 3 种。
人工智能、储能和电力行业:迈向智能和弹性电网!
全球能源行业在生产、销售和分配能源的方式上面临着根本性的变化。而且反应中出现了一些矛盾(https://www . energy central . com/c/CP/energy-execs % E2 % 80% 99-tone-climate-changing-they-still-see-long-fossil-future)。在提高恢复能力的同时,减少二氧化碳排放的压力很大。因此,必须找到方法来管理可再生能源日益增长的电力生产,这种生产是不可预测的,并且依赖于当地天气的异常,甚至当我们考虑气候变化的影响时,依赖于全球气候的异常。
越来越清楚的是,全球需要清洁、廉价和可靠的能源。这不仅是电网运营商的问题,而且能源来源的可靠性和电力成本也是消费者、政府和民间社会行为者以及商人所关心的问题,这些人都希望取悦他们的客户或他们的选民。
人工智能(AI)可能是满足这些需求的非常有用甚至强大的工具。而且,我们会看到越来越多的人工智能应用在能源领域。值得注意的是,通过最佳储能管理最大限度地提高绿色低碳发电的增长是一项人工智能应用,将产生潜在的巨大长期影响。
人工智能整合包括存储在内的各种能源的能力
各种形式的可再生电力资源出现作为传统的煤和天然气发电厂的继承者。然而,可再生能源生产的一个关键问题是它的间歇性。阴天或一系列安静无风的下午会降低产量并造成停电。相反,在不需要的时候会产生过多的能量。事实就是如此,在 2018 年 3 月,葡萄牙面临阳光明媚和多风的日子,在那里它生产的可再生电力比它消耗的还要多(https://www . NPR . org/sections/the two-way/2018/04/05/599886059/in-March-Portugal-made-more-than-successful-renewable-energy-to-power-the-whole-coun)。这种潜在的能量浪费或缺乏意味着最大限度地利用能量储存及其所有形式(电化学、热、机械等)是很重要的。)如果我们想要最小化备用能量的使用,例如,柴油发电机、燃煤发电厂或其他调峰电厂,这种存储能够被快速激活也是至关重要的,这些备用能量目前被用于平滑进入高峰时期的快速下降。
需要智能存储或“智能能量存储”(IES)解决方案来管理过多的峰值。人工智能可用于预测和制定储能管理决策。例如,人工智能可以通过短暂削减主电网的电力需求来管理电力短缺,同时它可以使用整个社区或地区的存储。人工智能的使用将生成电力需求、产量和天气的预测,通过预测和管理产量波动,可以减少对这些安全措施的需求。这项任务的速度和复杂性需要先进的人工智能。人工智能研究还研究规模和复杂性开始超过人类操作员的决策。它可以是安装在消费者、终端用户或高度使用场所(如工业设施)的数千个混合能量存储单元(电、热、其他)的网络。
一个庞大但敏感的网络
这也将增加供应的安全性。在北美,发电厂的平均寿命超过 30 年,电力变压器的平均寿命超过 40 年。传输系统的恶化导致了 2003 年“东北”的崩溃,影响了美国和加拿大的几个互联系统。这一故障导致 5000 万人连续几天断电,愚蠢的是,一条超载的输电线路倒塌并撞上了一棵树。这种情况显然会对整个区域网络产生连锁效应,并构成公用事业公司难以管理的任务,可以通过更好的需求预测或本地网络的更好响应来避免。快速变化。
人工智能能够“理解”(或破译)数据集,以及数据中的模型或模式,并进行非常准确的预测和模拟,这将增加电网优化、能源效率甚至需求增长期的机会。
人工智能(AI)与许多先进的能量存储技术相结合,当它与机器学习、深度学习和先进的神经网络相结合时,可以展示能源转换和公用事业部门的巨大潜力。随着去碳化、权力下放和新技术的部署,公用事业、独立电力生产商和其他能源公司正在使用人工智能来管理可再生能源份额不断增长所导致的供需失衡。
客户群已经变得巨大。客户群已经增长到数亿用户,但整体结构仍然需要现代化的大修。这是一个由发电厂、输电线路和配电中心组成的庞大网络。而这一切,距离托马斯·爱迪生 1882 年在曼哈顿下城为首批 59 家北美客户供电,开设美国第一座发电站还不到 140 年。在美国,这个网络已经包括了近 5800 个发电厂和超过 270 万公里(约 170 万英里)的输电线。据估计,如果美国总能源需求预计到 2050 年增长 25%,那么到 2040 年,全球能源使用预计将增长 15.3%(数据摘自美国能源信息署)。
除了使电力网络和系统变得智能和灵活,人工智能算法还可以帮助公用事业和能源公司了解和优化用户行为,并管理能源消耗。在不断变化的背景和环境中的不同部门。
一种扩展的分散生产
另一个挑战是分散发电的出现和发展,即私人用户利用风能和太阳能等可再生能源发电并使用自己的电力。这使得供求关系变得复杂,迫使公用事业公司从私人用户那里购买多余的能源,这些用户生产的电力多于他们消耗的电力,然后将这些电力送回电网。自 2010 年以来,太阳能的使用增加了两倍多,预计这一趋势将随着光伏电池的发展而继续,光伏电池是一种利用阳光发电的设备,可以降低成本,提高效率。
当前系统的设计一般没有考虑到能源的多样化,特别是可再生资源的增加。例如,在许多美国管辖区,当需求超过供应时,公用事业公司提前几分钟启动以化石燃料为基础的发电厂,即所谓的“最先进”发电厂,以避免连锁灾难。这个过程是最昂贵的,但也是这些公司最赚钱的部分。这导致消费者支付更高的电费,并增加向大气中排放的温室气体。随着未来几年能源需求的大幅增长,这些问题将会加剧。为了避免 IES 的这些非最佳(至少)运行模式,AI 可以启用自动学习算法,结合这些复杂网络上的数据和实时气象数据(来自卫星、地面观测和气候模型),充分利用这些算法来预测可再生能源产生的电力,如风、太阳和海洋。
结合大数据、云和物联网(IoT)等其他技术,人工智能储能可以通过提高电源的可访问性,在电网管理中发挥重要作用。可再生能源。
具有储能功能的智能电网
为了应对即将到来的各种挑战,看来关键的可持续和可靠的解决方案之一将是智能储能,其中人工智能将是大脑。这种“具有能量存储的智能电网”将不断收集和合成来自数百万智能传感器的海量数据,以便及时做出如何最佳分配能源资源的决策。此外,“深度学习”算法的进步将彻底改变能源经济的需求和供应。在“深度学习”算法中,机器可以从大型数据集的模式和异常标记中进行自我学习。
因此,我们将看到越来越多的专业化微电网以更高的分辨率管理当地的能源需求。这些可以与各种新的储能技术相结合,即使在极端天气条件或其他故障影响到更广泛的电力系统时,也能实现当地社区之间的持续交流。
在供应方面,工业能源将转向一个具有更大能源组合的投资组合,其特点是增加可再生资源的生产,并最大限度地减少由于与这些资源相关的自然间歇性、太阳辐射和风力的可变强度而造成的干扰。例如,当可再生能源的运行超过某个阈值时,由于风力增强或晴天,电网将减少化石燃料的生产,从而限制气体排放。有害的温室效应。在可再生能源产量低于峰值的时期,情况正好相反,可以尽可能高效地利用所有能源,必要时只依赖化石燃料。此外,生产商将能够管理多种来源产生的能量,以应对实时需求的社会、空间和时间变化。
获胜组合
在接下来的几年里,IES 技术有望通过自动化太阳能和风能部门的运营来提高可再生能源部门的效率。这也将使公用事业和生产者价格指数推出新的业务和服务模式。
如果这种具有储能功能的智能电网能够通过更好地整合可再生资源,以最有效的方式使用包括化石燃料在内的能源,随着这些技术在复杂性和容量方面的发展,整个系统可能能够大大减少其碳足迹。尽管未来技术创新存在不确定性,但我们也可以期待智能电网系统通过优化地方和国家层面的供需来降低电费并防止灾难性停电。
同样,基于 IES 的应用可以通过以下方式为能源和公用事业部门创造额外的收入机会:
使软件应用程序能够分析大型数据集、识别模式、检测异常并做出准确预测,或者能够基于学习自主做出准确决策。
通过使用高级算法和利用区块链来保护数据和实现以客户为中心的解决方案,促进客户积极参与需求响应计划。
使用预测分析(https://www . SAS . com/en _ us/insights/analytics/predictive-analytics . html)改善设备操作和维护,并提供停机时间,从而延长设备寿命。
对于那些寻求影响社会未来的人来说,人工智能和储能之间的接口是一个极好的起点。技术创新正在从根本上改变我们对这两个行业的看法,它们的整合还处于初级阶段。它们的协同作用可以改变我们从来不知道的世界,并在改善其可持续性的同时开辟机会…实现智能和弹性电网!
本文是 2019 年 2 月和 3 月首次发布 Linkedin Pulse 的 2 篇文章的系列:
可再生能源(RE)热潮为经济、能源部门和战争带来了巨大的机遇…
www.linkedin.com](https://www.linkedin.com/pulse/what-ways-artificial-intelligence-energy-storage-change-bilodeau/) [## 人工智能和储能将从哪些方面改变能源领域?(第二部分)
人工智能、能量存储和电力工业:迈向智能和弹性电网!这是第二次…
www.linkedin.com](https://www.linkedin.com/pulse/what-ways-artificial-intelligence-energy-storage-change-bilodeau-1e/)
供应链管理中的人工智能
利用数据推动运营绩效
供应链管理(SCM)在当今几乎每个行业都至关重要。尽管如此,尽管它很重要,但它并没有像许多其他领域一样受到人工智能初创公司和供应商的关注。然而,考虑到工业物流、运输和仓储收集的大量数据,这是一个具有很大潜力的领域。
数字化转型,数字化,工业 4.0 等等。
这些都是你以前可能听说过或读到过的术语。然而,在所有这些时髦词汇的背后,主要目标是利用技术和数据来提高生产率和效率。设备和传感器之间的信息和数据的连接和流动允许大量的可用数据。关键的促成因素是能够使用这些大量的可用数据并实际提取有用的信息,从而有可能降低成本、优化容量并将停机时间降至最低。这就是最近围绕机器学习和数据分析的讨论发挥作用的地方。
供应链的人工智能
与任何其他行业一样,当前对数字化的关注也在改变供应链管理。提高供应链的效率对许多公司来说非常重要。在艰难的利润率下运营,即使是微小的改进也会对底线利润产生重大影响。
数据分析和机器学习有利于供应链管理的例子包括需求预测和仓库优化。考虑到工业物流、运输和仓储收集的大量数据,能够利用这些数据来推动运营绩效对于那些正确操作的人来说可能是一个游戏规则改变者。
案例研究:需求预测的预测分析
为了说明机器学习在供应链中的使用,我将通过一个专注于需求预测的示例案例研究。以下示例涵盖了一家假设的挪威零售商,包括位于不同位置的各个商店以及一个主要的中央仓库,如下图所示。
对于这样的零售商来说,挑战之一是优化货物的本地仓库存储与集中仓库存储:一方面,大量的本地存储是昂贵的,另一方面,主要依赖于集中存储并且冒着商店中商品售罄的风险是另一个因素。因此,仓库优化非常重要,获得准确的销售预测将是非常有用的信息。
为了限制案例研究中的数据量,匿名化的数据集包括 2013 年至 2017 年期间 10 家不同商店的 50 件商品子集的销售商品数量。总的来说,这个数据集大约有 100 万行,数据格式如下所示:
因此,历史销售记录代表了我们试图从中提取有用信息以预测未来销售的数据。当然,理想情况下,这可以由其他可用数据源(例如天气数据)来补充,因为销售很可能会受到天气状况的影响。例如,如果您想预测一家杂货店下周销售的冰淇淋和烧烤食品的数量,拥有天气预报信息可能是非常有用的信息(尤其是对于挪威的示例零售商,那里的夏季天气至少可以说是不稳定的!).幸运的是,挪威计量研究所有一个“weather API”,在那里你可以下载天气数据,如果你想试一试的话,可以免费试用!
训练数据和目标变量
在本例中,我们试图预测 10 家商店中包含在示例数据集中的 50 种(匿名)商品中的每一种商品的销售数量。基本的想法是,历史销售记录可能包含一些隐藏的模式,我们的机器学习模型可以挑选出来。如果是这种情况,模型就可以利用这些模式对未来的销售做出准确的预测。
我们使用 2013 年 1 月至 2017 年 9 月的历史销售记录作为我们模型的训练数据,然后我们尝试预测 2017 年最后一个季度(10 月至 12 月)的销售商品数量。
下图左侧显示了商店 10 中“商品 15”的培训数据子集。这表现出明显的年度周期性(夏季销售额最高),以及销售逐年增长的线性增长趋势。我们的目标是预测 2017 年 10 月至 12 月的销售额,如右图所示。
定义机器学习模型
定义了训练数据和我们的目标变量(我们试图预测的变量)之后,我们现在可以建立一个预测模型,试图利用数据集中隐藏的模式来预测未来的销售。
时间数列预测法
时间序列预测是机器学习的一个重要领域。这一点很重要,因为有太多的预测问题涉及到时间因素。然而,虽然时间组件增加了额外的信息,但与许多其他预测任务相比,它也使时间序列问题更难处理。
有几种类型的模型可用于时间序列预测。其中一个受欢迎的选择是“长短期记忆网络”,或简称为 LSTM 网络,这是一种特殊的神经网络,根据以前时间的数据进行预测。它在语言识别、时间序列分析等方面非常流行。然而,根据我的经验,在许多情况下,更简单类型的模型实际上提供了同样准确的预测。使用诸如随机森林、梯度推进回归器和时间延迟神经网络的模型,可以通过添加到输入的一组延迟来包括时间信息,从而在不同的时间点表示数据。
我不会在这里进行进一步的数据分析,但是对于时间序列预测的机器学习的介绍,你可以看一下我以前的一篇关于这个主题的文章。
预测模型
由于本文的主要焦点不是技术方面的细节,所以我将简单地提及一些实现细节。
数据集由带标签的数据(即监督学习)组成,是数字和分类变量的混合。使用“日期”变量,我们还可以提取一些额外的有用特征,例如星期几,日期是否是国家假日等。,与单独使用日期相比,它为我们的模型增加了有用的信息。
对于这些混合变量类型,基于树的模型通常是一个好的选择。在下面的例子中,我决定使用一个随机森林算法,作为一个非常简单的基线预测模型。这主要是因为这种类型的模型可以轻松处理不同数据类型(数字和分类)的混合,并且它们通常“开箱即用”地执行得相当好,不需要任何大量的超参数调整。
结果
在对模型进行训练之后,我们现在可以检查它在测试数据上的表现如何(2017 年最后一个季度)。预测模型被训练为同时预测 10 家商店中每一家的所有 50 件商品的销售额,但是为了便于直观地显示结果,我决定这里只绘制“商品 15”的预测作为示例。
从下图开始,我们比较了商店 10 的实际销售额和预测销售额。我们注意到,我们的简单基线模型在捕捉每周周期和 12 月销售单位数量的特征下降方面做得相当好(注意,y 轴被截断,以便更清楚地显示实际销售和预测销售之间的偏差)。尽管如此,我们观察到该模型不能捕捉所有的短期波动(或噪声),鉴于训练数据包含的信息有限,我也不期望它能捕捉到。
另一方面,在右图中,我绘制了实际销售与预测销售的对比图,但这一次销售单位的数量是所有 10 家商店的平均值。通过这样做,大多数短期波动(或噪声)“达到平均”,我们观察到实际销售和预测销售之间有更好的匹配。
你是对单个商店的水平感兴趣,还是对所有商店的总销售额/平均销售额感兴趣,这取决于你想要达到的目标:如果你主要关心的是优化你的中央仓库,预测总销售额可能会提供足够的信息,而挖掘单个商店的详细信息可能会很费时间,而且收效甚微。这一切都归结为明确定义你的目标,并专注于你试图解决的业务问题,而不是你用来解决它的技术。
摘要
上面的用例示例简单介绍了机器学习在供应链中许多有趣和有用的应用之一。在未来,我相信机器学习将会被用在比我们今天所能想象的更多的地方。你认为它会对各个行业产生什么影响?我很想在下面的评论中听到你的想法。
如果你有兴趣了解更多与人工智能/机器学习和数据科学相关的主题,你也可以看看我写的其他一些文章。你会发现它们都列在我的中型作者简介中,你可以在这里找到。
而且,如果你想成为一个媒体会员,免费访问平台上的所有资料,你也可以使用下面我的推荐链接。(注意:如果您使用此链接注册,我也会收到一部分会员费)
[## 通过我的推荐链接加入媒体- Vegard Flovik
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
medium.com](https://medium.com/@vflovik/membership)
更多来自 Vegard Flovik 媒体:
- 蒙特卡洛方法简介
- 从物理学到数据科学的转变
- 什么是图论,为什么要关心它?
- 用于图像分类的深度迁移学习
- 构建一个能读懂你思想的人工智能
- 机器学习:从炒作到现实应用
- 人工智能和大数据隐藏的风险
- 如何使用机器学习进行异常检测和状态监控
- 如何(不)使用机器学习进行时间序列预测:避免陷阱
- 如何利用机器学习进行生产优化:利用数据提高绩效
- 你是怎么把物理教给 AI 系统的?
- 我们能使用纳米级磁铁构建人工大脑网络吗?
人工智能研讨会——从宣传到现实应用
电子游戏中的人工智能
概述视频游戏人工智能如何随着时间的推移而发展,以及目前在游戏中的应用
由劳拉·e·舒蒙·马斯和安迪·卢克撰写
Virtual Reality Photo by Harsch Shivam
大多数人可能认为过去几年发布的大多数游戏都有高度复杂的人工智能,用于任何非玩家控制的角色、生物或动物(在本文中通常称为机器人)。然而,许多视频游戏开发商担心失去对整体玩家体验的控制,不愿在游戏中内置先进的人工智能。事实上,电子游戏中人工智能的目标不是创造一个无与伦比的实体供玩家与之斗争,而是意味着最大限度地提高玩家的参与度和长期享受。
如果你拿起一个新游戏开始玩,你会不会有更多的享受被一遍又一遍彻底摧毁?或者,你更愿意和与你水平相当的人/事配对,这样你就可以随着时间的推移不断学习和提高?绝大多数玩家可能会选择后者。这并不意味着人工智能在现代游戏行业没有一席之地,只是意味着它的目的与我们最初的预期不同。我们不想创造最好的人工智能,我们想创造最令人愉快的人工智能供玩家互动/竞争。
人工智能在游戏中的历史
人工智能是一个非常宽泛的术语。它不一定需要成为一个从玩家的行为中学习的模型。Wolfenstein 3D 早在 1992 年就发布了,甚至那款游戏中的士兵都有一个初步的人工智能形式。F inite 状态机(FSM)算法是一个相对简单的人工智能,设计师创建了一个机器人可以经历的所有可能事件的列表。然后,设计者会对每种情况做出具体的反应(Lou,2017)。我们可以想象,在 1992 年,Wolfenstein 3D 的开发者考虑到了敌军士兵可能经历的所有情况。一扇门可能在他们的视野中打开,Blazkowicz(Wolfenstein 系列的主人公)可能走进视野,他们可能从后面被击中,他们可能看不到 Blazkowicz,等等。开发人员会编辑这个列表,并针对每种情况,告诉机器人应该做什么。下面是 Lou 文章中的一个有用的视觉效果:
Figure 1 (Lou, 2017)
这显然是一个简单化的例子。我们可以想象,我们构建的细节越多,它就会变得越复杂。在放弃之前,机器人应该搜索 Blazkowicz 多长时间?当/如果它们放弃了,它们应该留在原地还是回到它们的产卵点?这个列表会很快变得很长,很详细。在 FSM 中,每种情况都会被游戏开发者分配一个特定的动作。
FSM 算法在每个游戏中使用是不可行的。例如,想象在一个策略游戏中使用 FSM。如果一个机器人被预编程为每次都以同样的方式回应,玩家将很快学会如何智胜计算机。这创造了一个重复的游戏体验,正如你所料,对玩家来说是不愉快的。创建 M onte 卡洛搜索树(MCST)算法是为了防止 FSM 的可重复性。MCST 的工作方式是首先想象一个机器人当前所有可能的动作。然后,对于每一个可能的行动,它分析一个玩家可能做出的所有反应,然后考虑它可能做出的所有反应,等等。(楼,2017)。你可以想象这棵树会有多快变得巨大。这里有一个很好的图表来形象化 MCST 是如何工作的:
Figure 2 (Lou, 2017)
图 2 突出显示了使用 MCST 的计算机在对人类组件采取行动之前所经历的过程。它首先查看它拥有的所有选项,在上面的例子中,这些选项要么是防御,要么是建造技术,要么是攻击。然后,它构建了一个树,预测此后每一次潜在行动成功的可能性。上面我们可以看到,成功可能性最高的选项是‘攻击’(因为暗红色等于奖励的概率更高),因此计算机选择攻击。当玩家下一步行动时,计算机会再次重复树的构建过程。
想象一下像《文明》这样的游戏,电脑可以做出大量的选择。如果计算机要为整个游戏的每一个可能的选择和每一个可能的场景建立一个详细的树,它将会花费非常长的时间。它永远不会行动。因此,为了避免这种巨大的计算,MCST 算法将随机选择几个可能的选项,并只为选中的选项构建树。这样,计算会快得多,计算机可以分析哪一个选项最有可能获得奖励。
《异形:孤立》中的人工智能
最近,视频游戏中更受欢迎的高级人工智能形式之一是来自创意大会的外星人:隔离的外星人。对于人工智能在幕后的工作方式有一些误解。然而,这是一个非凡的展示,展示了人工智能可以用来为玩家创造一个迷人而不可预测的环境。
Alien: Isolation 中的外星人有两种驱动人工智能的力量控制它的运动和行为:导演人工智能和外星人人工智能。导演人工智能是一个被动的控制器,负责创造一个愉快的玩家体验。为了做到这一点,临时导演随时都知道玩家和外星人在哪里。然而,它不与外星人分享这一知识。人工智能总监关注着所谓的威胁指标,它本质上只是一种对预期玩家压力水平的衡量,由多种因素决定,如外星人与玩家的接近程度、外星人在玩家附近停留的时间、玩家可见的时间、运动跟踪器设备可见的时间等。这个威胁量表通知外星人的工作系统,它本质上只是外星人的任务追踪器。如果威胁标尺达到一定等级,任务“搜索新位置区域”的优先级会增长,直到外星人离开玩家进入一个单独的区域。
行为决策树:
在深入研究外星人人工智能如何工作之前,首先强调决定过程的结构是很重要的。外星人人工智能使用一个广泛的行为决策树,有超过 100 个节点和 30 个选择器节点。想象下面这个简单的例子:
Figure 3 (Simpson, 2014)
行为树的工作方式是从左到右提问。成功允许沿着树前进,而失败将返回到序列节点。流程是这样的:序列->我饿了吗?(成功)->序列(运行)->我有食物吗?(成功)->序列(运行)->周围没有敌人(成功)->序列(运行)->吃食物(成功)->序列(成功)->父节点(Simpson,2014)。如果在任何时候,其中一个节点返回(fail),整个序列都将失败。例如,如果结果是“我有食物吗?”失败后,它不会检查周围是否有敌人,也不会吃食物。相反,该序列会失败,这将是该序列的结束。
序列显然会变得更加复杂,在深度上变得多层次。下面是一个更深入的例子:
Figure 4 (Simpson, 2014)
请记住,当序列成功或失败时,它会将结果返回给它的父节点。在上面的例子中,让我们假设我们已经成功地接近了门,但是没有打开门,因为门是锁着的,我们没有钥匙。序列节点被标记为失败。结果,行为树路径回复到该序列的父节点。这个父节点可能是这样的:
Figure 5 (Simpson, 2014)
所以,我们在开门方面失败了,但是我们还没有放弃。我们的父节点有另一个序列让我们尝试。这一次是通过窗户进入。外星人人工智能有 30 个不同的选择器节点,总共 100 个节点,所以它比这个例子复杂得多,但我希望这能让你了解外星人人工智能是如何在引擎盖下工作的。
回到外星智能
我们知道,外星人的人工智能是控制外星人行动的系统。它从不提供关于玩家位置的信息。它从人工智能主任那里得到的唯一信息是它应该搜索哪个大致区域。除此之外,它必须自己找到玩家。它确实有一些工具可以帮助它追捕玩家。第一个是传感器系统,它允许外星人获取环境中的听觉和视觉线索。诸如脚步声,枪声,开门声,甚至运动跟踪器的嘟嘟声,所有这些都有助于外星人追踪玩家。音频范围取决于产生的噪声类型。除了声音传感器,外星人还可以感知视觉传感器,比如瞥见里普利跑过,或者看到视野中的门开着,等等。
外星人追捕玩家的另一个工具是搜索系统。开发人员已经确定了一些特定的区域,这些区域是外星人预先设定好要搜索的藏身之处。但是,它不会以任何特定的顺序搜索它们,甚至会仔细检查已经访问过的区域。当然,如果外星人听到噪音或看到视觉线索,它会搜索开发人员没有明确概述的区域。
关于《异形:孤立》最常讨论的话题是,随着游戏的进展,异形似乎对玩家了解得更多。它做出的动作似乎变得更加复杂,因为它了解了玩家游戏风格的某些特征。令一些人惊讶的是,开发人员实现这一点的方式是而不是通过在外星人的人工智能系统中建立一个复杂的神经网络。为了展示游戏如何实现这种外星人学习的感觉,我们需要参考一下外星人人工智能的行为决策树。
Figure 6 (Simpson, 2014)
在游戏开始时,这个行为树的某些部分对外星人是封闭的。被封锁的区域对外星人来说是不可接近的,这意味着它不能接触某些行为和动作。例如,在游戏开始时,响应远处开门声的树的部分可能不活动。如果玩家在外星人的视野中打开一扇门,它可以解锁行为树的这一部分,这样,在未来,开门的声音将触发一个反应。随着玩家在游戏中的进展,越来越多的外星人行为树被解锁。这给人一种外星人正在学习和适应玩家游戏风格的错觉。
视频游戏中的遗传神经网络
如果没有提到神经网络在视频游戏中的应用,这篇文章将是不完整的。最近有一些非常著名的例子,其中一个是人工智能击败了职业 Dota 2 团队。然而,涵盖这个主题的最佳方式是从小处着手,并对神经网络如何学习视频游戏的目标和策略建立基本的理解。
Figure 7 (Comi, 2018)
为了达到这个基本的理解目的,我们将使用的游戏是 Snake。对于那些不熟悉的人来说,贪吃蛇是一个 2D 游戏,你控制一排方块(被称为蛇)。你有三个移动的选择:左,右,或直走。如果你撞上了墙或者撞到了尾巴,你会立即死亡并重新开始。有一个点供你收集(被称为食物),它会让你的尾巴长一个方块。所以吃的越多,变得越长。
假设我们想教我们的蛇如何获得尽可能高的分数。为了在这个世界上生存,我们的蛇需要学习一些东西。为了让我们的蛇学习,需要向它提供关于环境的信息。我们将把我们提供的信息称为输入。这些输入可以是我们所知道的任何信息。例如,我们的输入可以是以下 6 个是/否问题:是否清晰直、是否清晰左、是否清晰右、是否食物直、是否食物左、是否食物右(Designing AI,2017)。这将根据每个问题的答案为 6 个输入节点提供 1 或 0。然而,这些输入也可以是蛇头与墙壁、尾巴或食物之间的距离。为简单起见,让我们停留在 6 个输入节点的例子上。
接下来我们需要告诉我们的蛇的是我们希望它实现什么。为了传达我们的预期目标,我们实施了一个奖励系统。例如,我们可能会给我们的蛇 1 分,每次它向食物移动一步,可能会给它 10 分,每次它吃了食物,长度增加。然而,当 Binggeser(设计人工智能,2017)为他的蛇实施这些奖励时,他意识到他的蛇只会在一个非常小的圈子里移动。通过这种方式,他的蛇能够在避免墙壁和长尾巴带来的危险的同时获得分数。显然,这不是预期的结果。需要在初始模型中加入某种惩罚,每当蛇离开食物时就扣分。这促使蛇主要朝着食物的方向移动。
所以现在我们有了一条蛇,它拥有来自环境的信息和一个奖励系统,这个系统定义了它的目标是什么。我们将何去何从?我们的蛇实际上是如何学会玩这个游戏的?此时,快速浏览一下神经网络实际上是如何工作的会很有帮助。
世代神经网络
世代神经网络的构造方式与标准神经网络相同。它从一定数量的输入节点开始,然后输入到一个或多个隐藏层,最终提供一个输出。这是一个很好的视觉示例:
Figure 8 (Comi, 2018)
对于我们的蛇的例子,我们将有 6 个输入节点,它们是我们之前定义的 6 个是/否问题:它是直的吗,它是左的吗,它是右的吗,它是直的吗,它是左的吗,它是右的吗。每个输入节点通过我们称之为权重的东西连接到每个第一隐藏层节点。在图 8 中,我们看到连接到每个节点的所有线(权重)。这些权重是我们的模型在学习加强或削弱哪些输入以提供最准确的输出时将要调整的。在我们的例子中,“最准确的输出”被定义为“收集最多点数的蛇”。记住,我们的蛇向食物移动会得到分数,吃食物会得到更多分数,远离食物会得到负分数。
一代神经网络“学习”的方式是首先决定每一代的大小(假设我们希望每一代包含 200 条蛇)。接下来,它为第一代中的 200 条蛇中的每一条创建微变化的权重,然后运行第一代中的 200 条蛇中的每一条,并选择最成功的蛇(获得最多分数的蛇)。假设我们选择了在我们的第一代中得到最多分数的前 10 条蛇(前 5%)。这 10 条蛇随后成为第二代的“父母”。这 10 条蛇的重量用来定义第二代的起点。第二代的 200 条蛇将再次产生这些重量的微小变化,表现最好的将被选为第三代的“父母”,等等。
回蛇
因此,正如我们在上面看到的,我们可以一遍又一遍地运行我们的第一代 snake 模型(上面我们运行了 200 次),通过稍微改变每个权重来查看 snake 出现的各种变化。然后,我们选择将继续影响第二代神经网络权重的最佳表现者。我们对随后的每一代都重复这个过程,直到蛇的学习率开始稳定下来(换句话说,直到一代的进步减缓或停止)。
也许在第一代、第二代和第三代中,没有一条蛇吃过食物,因此也不知道食物奖励 10 分。然而,也许在第四代,一条蛇吃一块食物。这条蛇很可能在它的世代中拥有最高的分数,因此会被选择来影响未来的世代。后代的权重将基于最成功的蛇祖先而改变。10 代,100 代,甚至 1000 代之后,你可以想象会发生多大的学习。
视频游戏人工智能在现实世界中的应用
用于视频游戏行业的强化学习同样也成功应用于其他行业。例如,侠盗猎车手游戏(Grand Theft Auto games)已经预编程了“交通规则、道路和汽车物理”(Luzgin,2018),用于为测试自动驾驶汽车算法提供安全和现实的环境。它不仅安全、真实,而且在虚拟环境中收集数据的速度比真实世界快 1000 倍(Luzgin,2018)。
“视频游戏是训练人工智能算法的一种很好的方式,因为它们旨在让人类的思维逐渐进入越来越困难的挑战。”(鲁兹金,2018 年)
人工智能在电子游戏方面的最新进展之一是由 Open AI 的研究人员取得的。Open AI 创造了一个基于算法的游戏,其唯一目的就是带着天生的好奇心去探索。奖励系统的重点是奖励游戏中不断深入的探索。研究人员将这个好奇心驱动的模型放入一个超级马里奥兄弟的游戏中,它完全出于好奇心成功通过了 11 关。显然,这也有缺点,因为它需要巨大的计算能力,而且机器很容易分心。然而,这对于第一次玩游戏的人类玩家来说也是一样的。正如 Luzgin 在他的文章中引用的,“婴儿似乎采用无目标的探索来学习对以后生活有用的技能。”这种无目标探索的感觉贯穿一生,但最明显的例子是通过视频游戏探索虚拟环境。
摘要
如今,在视频游戏行业,人工智能有很多种形式。无论是简单的 FSM 模型还是从环境反馈中学习的高级神经网络,这些虚拟环境为人工智能的发展提供的可能性(无论是在游戏行业还是其他领域)都是无限的。
引用的作品
彼得·宾格泽。设计 AI:用进化解决蛇。2017.https://becoming human . ai/design-ai-solution-snake-with-evolution-f 3d d6a 9 da 867
来吧毛罗。如何教 AI 玩游戏:深度强化学习。2017.https://towards data science . com/how-to-teach-an-ai-to-play-games-deep-reinforcement-learning-28f9b 920440 a
卢哈比。视频游戏中的人工智能:走向更智能的游戏。2017.http://sitn . HMS . Harvard . edu/flash/2017/ai-video-games-forward-intelligent-game/
卢兹金,罗曼。视频游戏作为人工智能的完美游乐场。2018.https://towards data science . com/video-games-as-a-perfect-playground-for-artificial-intelligence-3 B4 ebeea 36 ce
克里斯·辛普森。人工智能的行为树:它们是如何工作的。2014.https://www . gama sutra . com/blogs/ChrisSimpson/2014 07 17/221339/Behavior _ trees _ for _ AI _ How _ they _ work . PHP
汤普森汤米。完美的有机体:外星人的 AI:隔离。2017.https://www . gama sutra . com/blogs/TommyThompson/2017 10 31/308027/The _ Perfect _ organize _ The _ AI _ of _ Alien _ isolation . PHP
人工智能对企业的成功至关重要,原因如下!
人工智能笼罩着我们生活的方方面面,我们不能更欣赏这项技术了!从个人生活到大企业,人工智能的浪潮已经将这一切夷为平地。
在这里,我们将探索人工智能为企业带来了什么,以及为什么它在 2020 年及以后不再是奢侈品而是必需品!人工智能已经以一种似乎不再是开箱即用的方式融入了我们的生活。从电子邮件过滤和聊天机器人功能到谷歌的预测搜索或定制产品推荐,AI 就在你身边。话虽如此,围绕这个流行词仍然有很多困惑。为此,让我们从头开始!
什么是人工智能?
人工智能(AI)是机器对人类智能的模拟。这些机器被编程为像人类一样思考和执行动作。在这种情况下,机器通过监督、非监督或强化学习来学习和解决问题。机器学习和深度学习属于人工智能的范畴。
AI 在不同行业的作用
人工智能已经无缝地将自己融入到业务流程中。它不仅使我们的商务生活变得简单,而且还能以更高效的方式完成任务。
尽管它在许多方面仍处于萌芽阶段,但这是最精彩的部分-
每天 我们都会产生数量惊人的 2.5 万亿字节的数据。只有人工智能有能力处理并从中获取意义。
市场和客户洞察- 人工智能对海量数据发挥作用。无论是通过系统矩阵、网络矩阵还是社交媒体,都不缺乏关于市场或客户的数据。所有这些都作为人工智能系统的原材料,为营销你的产品/服务做出有效的决策。
虚拟协助- 有了虚拟协助,公司可以全天候为客户服务。事实是,大多数客户打电话给客户支持服务寻求一般的答案。聊天机器人可以有效地处理所有这些查询。
流程自动化- 为什么企业希望其人力资源去完成一项可以自动化的任务?人工智能促进了不同行业各种业务流程的自动化。这不仅加快了整个过程,而且消除了人为错误的机会。
高效的数据使用- 与以前不同,现在可用的数据不是结构化的格式。它超越了人类处理数据并从中识别人类意义的能力。人工智能也是帮助企业渡过难关的工具。此外,企业现在可以利用这些数据更好地了解客户,不再遵循一刀切的方法。
增强客户体验- 对于一个企业来说,还有什么比忠诚的客户更重要的吗?但要建立这种关系,你不仅需要满足他们的需求,还需要比你的竞争对手更好地吸引他们。人工智能分析他们的行为,并通过可操作的见解为他们提供他们一直在寻找的东西。
为什么人工智能对你的业务至关重要?
人工智能解决方案价格合理- 人工智能最好的一点是它适用于所有人。从中小企业到财富 500 强公司,人工智能肯定有适合所有人的东西。因此,你不需要等到收入高得离谱的时候才能够整合人工智能解决方案,你现在就可以做到!是啊!
这里有一些开始的方法-
- 从一次找到一个问题的解决方案开始(检查你的投资回报率。)
- 利用聊天机器人。
- 与其实现机器学习,不如将其自动化。
- 利用现有的工具,而不是从头开始构建。
营销过程自动化有助于增加销售- 新时代的营销要求你向顾客展示他们想看的产品。营销过程的自动化有助于实现这一点。
人工智能可以更容易地理解客户的模式,并据此营销产品。聊天机器人在转化访问该组织网站的客户方面也发挥了巨大作用。
AI 简化了营销过程,并通过有针对性的广告、定制产品推荐、重新营销策略、价格调整和许多其他技术来提高销售额。
人工智能支持的业务提高了工作效率- 当你从员工的待办事项列表中删除平凡的任务时,他们必然会专注于做得最好的事情。这提高了效率。人工智能在补充人类智能时效果最佳。此外,请注意,与人类不同,人工智能可以日复一日地做同样的工作,而不会失去注意力。这使得业务流程更加有效。
人工智能使企业和消费者之间的交流自动化- 不可否认的事实是,当涉及到企业与客户的关系时,交流确实是关键。此外,客户有权在各种平台上随时需要它。这个过程可以通过 AI 自动完成。机器学习算法可以从经验中学习,并以个性化的方式与客户交流。对于企业来说,这节省了时间,而对于客户来说,这增加了他们与企业的互动。
人工智能让处理库存变得简单- 处理库存的最大问题是,每次你都必须做得恰到好处。你必须有适当的库存,既不能短缺,也不能过量,否则会耗尽你的现金。
人工智能在这里得到它的权利。它能够通过预测客户未来的购买行为来自动完成再填充请求。因此,它将帮助您保持业务运行,改革周转时间,并在您需要时储存正确的产品。
人工智能有助于防止欺诈和保护数据- 人为错误是不可避免的,但你不能总是承担得起。你可以花所有的时间来检测欺诈和保护你的数据,但仍然会有漏洞。这种情况下你会怎么做?答案就在眼前——利用人工智能。
人工智能的子集,即机器学习通过从经验中学习和识别过程来工作。这正是这里所需要的——破解模式并在它开始时发出警报。
结论
人工智能是一种必需品,可以通过解码大量的非结构化数据(我们最大的资产)来改变你的业务。从这些数据中获得的信息可以给所有行业带来变革。
它还可以简化业务流程,加快任务,消除人为错误,预测缺陷,并为您做很多事情。
现在想象一下它会给你的企业带来什么!
不利用人工智能就像在 2020 年使用 2000 年的商业战略。你知道那没用的!
人工智能已经在改变我们的世界,在未来我们可以期待-
- 人工智能将更有效地发挥作用。因为它将有更多的数据量和更高的计算能力来处理这些数据。
- AI 可能根本不需要人类干预。
- 它将以更有意义的方式处理和利用数据。
- 让工作流程更加简单。
- 提供更高的打包数据安全性。
- 更便宜和创新的人工智能解决方案。
作者简介:
Amit Makhija 是 Space-O Technologies 的数字营销分析师,Space-O Technologies 是一家可靠的 iPhone 应用程序开发公司。他喜欢探索移动应用行业的最新技术&通过写文章与观众分享他的发现。在业余时间,他喜欢旅游、摄影和阅读非小说类书籍。
人工智能只是一个工具
关于人工智能(AI)的可能性和可能的应用的宣传目前似乎是无限的。人工智能程序和解决方案被誉为真正的灵丹妙药。然而,冷静地看,它们只是 IT 专家工具箱中的另一个工具。
在一些场景中,人工智能应用程序会提供更好的结果,但并不能由此得出普遍的优势。更重要的是,IT 经理必须非常仔细地检查他们想要为每个项目使用什么。要回答这个问题,决策者必须将人工智能与其他概念联系起来考虑。
AI 不替代,AI 补充
其中可以区分出两种不同的过程:编程的或者模型驱动的方法。首先是软件的传统开发。程序员一行一行地编写代码,指定系统应该满足哪些要求以及如何满足:从在 CRM 数据库中收集地址信息,到计算健康保险计划中的关税选项,再到取决于工件的铣床速度。这种方法的典型代表是标准解决方案,如企业资源规划(ERP)软件,但也包括将标准与单独创建的组件相结合的特定软件或混合形式。
另一方面,模型驱动的方法涉及较少的编程——在写下代码行的意义上——但是更关注技术和功能方面。随之而来的是更强的技术方面的抽象。它是关于一个模型中相互关系和影响的说明。这是手动建模或训练的,然后获得的知识可以应用于新的输入,如其他数据集。
原则上,就结果而言,这两种 IT 解决方案具有同等价值——编程系统和人工智能都可以解决相同的任务。然而,解决方案的选择对项目设计、涉及的各方、工作以及最终对 IT 解决方案的整个生命周期都有影响。
AI 项目大同小异。
如果负责人依赖于软件开发过程,项目将经历规划和实现的经典步骤:理解需求、开发、测试、推出并在此基础上操作软件。新的或变化了的条件确保那些相关的人一次又一次地经历这个循环。
基于模型的方法的过程是不同的:在这种情况下,一切都从理解需求开始。但是,接下来就需要把这些需求倾注到一个模型中,用测试数据来检验模型的质量,比如说,整合到 it 运营中,铺开,运营。典型的 IT 实施项目以与上述过程相同的方式发生,即在此之后。然而,关于所需功能的功能已经由模型给出。然后,实现项目“只”处理所谓的非功能性需求(NFR),如性能、可伸缩性或可用性。因此,这一程序确保了功能和技术问题的明确分离。因此,与编程相比,技术专家和建模在这个过程中起着重要的作用;IT 能力与此不太相关。
有两种不同的建模方法:一方面,专家可以手动描述模型,例如通过写下规则。另一方面,他们可以依靠自我学习系统(机器学习)。在这里,学习算法取代了人类开发人员。为了让这个算法工作,它需要输入。无论是基于历史数据集(例如,分类照片)的训练,还是来自专家的直接反馈。在哪些情况下决策者应该选择哪种方法?这不能笼统地回答,但一些指标表明了趋势。
人工智能的使用没有固定的规则
正如已经解释过的,人工智能不会取代任何已知的东西,而是用进一步的选择来补充 IT 解决方案空间。以下指标支持选择基于人工智能的解决方案:
——技术复杂度高,值得一模。业务问题和技术需求的分离带来了优势。例如,因为业务专家可以独立地扩展和优化系统。
-专家只能花很大力气来绘制和维护技术方面的内容。在这些情况下,使用学习系统会有回报。
理论到此为止。一个例子说明了与机器学习相比,手工编程或建模如何在相同的应用案例中证明自己。
听力不错
这种比较的场景是军事监视的自然限制区域:这些被分类用于无线电信号的分析。只要它们没有被加密,内容就会被解码。材料可以是声音或数据。在语音信号的情况下,专家区分模拟语音和数字编码的语音信号。考虑到技术发展,这可能令人惊讶,但仍有许多模拟、未编码信号在使用。
收听这些无线电信号需要许多人每天捕捉并转录模拟无线电信号。一个耗时且昂贵的过程。如果系统能够自动区分模拟语音信号和数字信号,这个过程就会简单得多。
为了创建这样一个系统的基础,该项目中涉及的无线电信号首先被人工分类为模拟或数字类别。他们收听无线电信号,并标记每个模拟语音信号的开始和结束。这样,他们标记了持续时间约为 24 小时的无线电信号。项目经理然后使用两种不同的方法:在第一种方法中,一个团队编程算法从这些信号中提取特征。这些特征然后通过程序化的病例区分进行分类——这是一个昂贵且耗时的项目。
深度神经网络接管信号评估
相比之下,一篇硕士论文讨论的是基于自学过程的解决方案。这名学生使用了一种所谓的深度神经网络,用分类数据进行训练。学生把信号的选择和评估都留给了神经网络。所以什么都没有被编程;准备工作包括数据材料的格式化和网络的配置。经过大约三个月的运作,一个功能系统已经可以使用。
两种方法的比较表明,尽管所涉及的努力较少,但学习系统取得了更好的结果。它对模拟语音信号的识别率达到了 95 %,远远高于编程程序所能达到的识别率。
因此,负责人必须在每个案例中仔细考虑使用人工智能技术是否是最佳选择。像本例中一样,并行开发几个过程是不可能的。然后需要人的智慧和经验来选择适当的方法。
H2O.ai 让人工智能变得简单
Photo Source: ShutterStock
Python 中使用 H2O.ai 和 AutoML 建模的综合指南
伊桑·戴伊&爱丽斯·李
如果你和我爸爸一样,你已经在 IT 行业工作了几十年,但对数据科学却只是一知半解。现在,你的新 C-something-O 希望你组建一个数据分析团队,并使用一套你在会议上只是模糊听说过的新术语。或者,您可能是一家快速发展的初创公司的开发人员,已经花了数周时间完成了一个算法,却被将模型部署到 web 应用程序以供实时使用的问题所困扰。对于这两种情况,H2O.ai 绝对是一个值得研究的解决方案。
为什么是 H2O.ai?
H2O.ai 将自己定位为一个软件包,通过其开源包 H2O 和 AutoML 来简化机器学习过程。虽然像 H2O 无人驾驶人工智能这样的产品允许最终用户在没有一行代码的情况下完全自动化这个过程,但大多数用户(像我一样)希望他们的模型开发至少有一定程度的可定制性。
H2O.ai 在这里大放异彩有几个原因:
- 它将开发过程简化为一个直观的工作流程,
- 训练模型比 sci-kit learn 等流行的软件包更快,并且
- 使用 Java 对象使得将一个模型转移到产品中变得简单多了
简而言之,H2O 无疑为大型数据集提供了一个快速且可访问的机器学习平台,该平台配备了用户友好的高性能工具。
概观
- 入门指南
- 构建独立模型
- 使用 AutoML 寻找最佳模型
- 模型部署
好消息是,Python 中的大部分 H2O 与您可能熟悉的 sci-kit 学习函数很相似。H2O 的数据结构与熊猫非常相似,指定、拟合和评估模型的工作流程也很相似。使用来自 UCI 知识库的金融信用数据集,我们将使用 H2O.ai 来预测个人在下一次付款中违约的概率。
注意:如果你只对 AutoML 部分感兴趣,跳过“构建一个 Hello,World!“模型”一节,它深入到开发单个模型的本质。您可以回到那里,将它以及提供的 H2O 文档链接更多地用作参考指南。
您可以使用帖子中的代码片段或下面链接的交互式 Python 笔记本来跟进。
GitHub:https://GitHub . com/elyselee/H2O-walk through/blob/master/H2O % 20 walk through . ipynb
H2O Python 入门
设置相关性
尽管我希望我可以说实现就像抛出另一个 pip install 命令一样简单,但实际上要复杂得多。
首先,到 H2O 稳定链接这里,下载包含最新版本的 zip 文件。按照下面的命令完成软件包的安装。
cd ~/Downloads
unzip h2o-3.25.0.4698.zip
cd h2o-3.25.0.4698
java -jar h2o.jar
截至撰写本文时(2019 年 6 月),H2O 仅支持 Java SE 运行时环境版本 8–11。您可以使用java -version
命令检查您的版本。如果你有 Java SDK 12,你必须卸载并降级到 Java SDK 11 以保持与 H2O 的兼容性。为此,在终端中执行以下命令:/usr/libexec/java_home -V
。复制它返回的路径名,并使用下面的命令卸载:sudo rm -rf pathname
。前往甲骨文 JDK 11 下载网站,创建一个帐户,并按照那里的说明进行安装。
现在您已经安装了必备包,打开您的 Python 脚本并执行下面的代码。nthreads
参数简单地控制执行操作的内核数量,而-1
为 H2O 分配最大数量的可用内核。
import h2oh2o.init(nthreads = -1, max_mem_size = 8)
h2o.connect()
数据预处理
如果你用 Python 做数据科学,使用熊猫数据框架。如果您正在从头开始编写算法并使用 NumPy 数组,那很好。但是如果你认为 H2OFrames 是值得学习的东西,我会为你节省很多时间和麻烦:它不是。
公平地说,H2O 跑得比 sci-kit learn 模型快得多的原因之一是 H2O 为熊猫提供了更高效的数据结构。但是对于特征工程,我们建议坚持使用传统的数据帧,然后在准备好导入时转换成 h2of 帧。因为这毕竟是一个 H2O 教程,我们的处理技术将使用 H2OFrames 来完成。H2O 也有很好的数据操作参考指南。
首先,我们将使用h2o.import_file()
函数导入 UCI 信用卡数据集。
df = h2o.import_file(‘uci_creditheader.csv’)
H2OFrames 的许多功能与 Pandas DataFrame 的功能是同源的。例如,我们可以使用.columns
属性检查列,该属性返回一个特性名称列表(不是 NumPy 数组)。我们可以使用drop()
功能删除不必要的特征(不需要轴规格)。
df = df.drop(‘ID’)
df.columns
在下面的代码中,我们将创建一个特性列名x
和目标变量名y
的列表。这种格式允许我们向训练和预测函数传递更少的数据结构(sklearn 要求 X_train 和 y_train),从而显著提高运行时。
y = ‘default payment next month’
x = list(df.columns).remove(y)
当我们谈到这个话题时,需要注意的是,H2O 将根据y
变量的数据类型自动假设一个回归或分类模型。使用df[y].type
属性的快速检查显示我们的值是整数(1 表示贷款违约,0 表示其他情况)。然后,我们可以使用as_factor()
函数将该列转换为因子类型。
df[y] = df[y].as_factor()
为了创建训练和测试集,我们将使用 H2O split_frame()
函数,而不是使用 sklearn train_test_split()
函数。为此,我们需要传递训练集和验证集大小的分数列表(测试集大小是隐式计算的)。该函数返回一个列表,第一个元素引用定型集,第二个元素对应于验证集,第三个元素是测试集。
splits = df.split_frame(ratios=[0.7, 0.15], seed=1)train = splits[0]
valid = splits[1]
test = splits[2]
我们还可以使用.nrow
属性检查每个集合的大小。请注意,这些集合中的每一个都包含 X 变量特性和 y 目标,这与我们在 sklearn 中完成的过程不同。
print(train.nrow)
print(valid.nrow)
print(test.nrow)
构建一个“你好,世界!”模型
模型构建
我们将使用随机森林估计器对我们的模型进行分类,您将再次注意到与 sci-kit learn 的相似之处。使用H2ORandomForestEstimator()
函数,我们实例化将用于分类(或回归,如果我们有一个整数或浮点响应变量)的模型。
from h2o.estimators.random_forest import H2ORandomForestEstimatorrf = H2ORandomForestEstimator(seed=1)
seed
:该参数与其他模块中的random_state
类似,只是控制创建模型时使用的随机数。这对于使用外部数据集进行模型验证时的再现性非常重要。- 还有一些其他特定于每个型号的参数,如
ntrees
或min_split_improvement
,可以指定。为了找出你所选择的模型算法,查看一下 H2O 的文档。
拟合和预测结果
为了使我们的模型适合数据,我们必须至少传递三个参数:training_frame
、y
列和x
列。但是,如果x
参数为空,h2o 将假设在拟合时使用除y
列之外的所有列。下面是一些其他参数,您可能希望在下面的片段中没有包括的数据中使用。同样,完整的列表可以在文档这里找到。
rf.train(x=x, y=y, training_frame=train)
nfolds
:用于交叉验证的折叠数。关于这方面的更多信息,请查看交叉验证的 H2O 解释。balance_classes
:当我们的目标特征中存在类别不平衡时,我们可能希望对数据进行重新采样,在创建新分布时,通过对少数类别进行过采样或对多数类别进行欠采样。如果我们将这个参数设置为True
,我们也可以指定一个class_sampling_factors
参数,并传递一个比率列表来确定最终的分布。ignored_columns
:如果我们在拟合时不希望包含某些列,但这些列有助于比较预测值,如观察 ID,我们可以使用此参数指定。categorical_encoding
:在 sklearn 中,我们在预处理阶段使用单独的函数处理分类变量,而 H2O 可以使用一个热编码或标签编码等技术处理每一列。简要说明:要将需要处理的列标记为分类列,请事先使用.as_factor()
函数来更改训练集和测试集中的数据类型。可以在这里找到categorical_encoding
选项的完整列表。
预测
返回每个类的预测概率非常简单,可以使用predict()
函数来完成。
y_hat = rf.predict(test_data=test)
进一步检查 y_hat,我们看到predict()
为每个观察值返回了三列:p0
,观察值属于 0 类的概率;p1
,观察值属于第 1 类的概率;和predict
,预测分类标签。这里,分类标签的判定边界(阈值)被假设为 0.5,因此任何大于 0.5 的p1
值将对应于为 1 的predict
标签。
性能赋值
真正理解模型评估的基础对于决策者最终决定一个模型是否适合部署和用户交互是至关重要的。我已经在这里写了一篇关于二进制分类的度量的文章如果你不熟悉这个主题或者需要复习一下。
为了检索关于我们的模型表现如何的报告,我们可以使用model_performance()
函数,并将结果打印到控制台。
rf_performance = rf.model_performance(test)
print(rf_performance)
输出有几个部分。首先,我们看到一个标题,它指定了报告什么类型的指标ModelMetricsBinomial
,以及模型类型drf
。
ModelMetricsBinomial: drf
** Reported on train data. **MSE: 0.14036700152537882
RMSE: 0.3746558441094691
LogLoss: 0.45587629761245807
Mean Per-Class Error: 0.30286812164834764
AUC: 0.7576361236577988
pr_auc: 0.5240926163909475
Gini: 0.5152722473155975
我们还会收到一个混淆矩阵,纵轴是实际标签,横轴是预测标签。注意:混淆矩阵的值在最大化 F1 分数的阈值(概率截止值)处报告,而不是 0.5。我们这里的输出确定为 0.312。
Confusion Matrix Calculated at Threshold that Maximizes F1 Score
H2O 输出的酷之处在于,它会自动计算每个阈值处的每个指标,然后报告最大指标value
以及达到该指标的threshold
。同样,如果这里使用的词汇对你毫无意义,我强烈推荐阅读这篇解释评估指标的文章。
这个组件对于理解模型是否真的完成了我们所需要的是至关重要的。想象一下,我们正在开发一个检测疾病的模型。Specificity
指我们正确预测的实际疾病病例的比例。我们宁愿最大限度地提高特异性,而不是精确性,原因很简单,因为没有检测到真正的患病患者和放弃早期干预的成本远比虚惊一场更糟糕。
顺便说一下,我们可以通过调用 H2OModelMetrics 对象的度量函数来返回特定的度量。要查看可以调用的指标的完整列表,请在键入 H2OModelMetrics 对象名称后点击选项卡,并从下拉列表中选择一个选项(然后添加()
以返回感兴趣的指标)。
rf_performance**.**auc()
rf_performance.confusion_matrix()
参考链接:
指标指南【https://towardsdatascience.com/hackcvilleds-4636c6c1ba53 :
其他型号的快速备忘单:
深度学习(DL) :由分层神经元组成的人工神经网络,每个连续的模型层都通过聚合对前一层进行改进。要了解更多关于这种工作方式的背景,请查看我们关于深度学习的文章。
epochs
:流式传输数据集的次数。L1
:添加 L1 正则化,通过将多个权重值设置为 0 来提高泛化能力和稳定性L2
:添加 L2 正则化,通过降低许多权重值来提高泛化能力和稳定性adaptive_rate
:学习率手动调谐默认开启loss
:指定损失函数,选项:Automatic
(默认)、Absolute
、Quadratic
、Huber
、CrossEntropy
分布式随机森林(DRF):DRF 用数据集创建一个回归或分类树森林。
ntrees
:树的数量max_depth
:最大树深sample_rate
:行采样率从 0 到 1(默认为 1)col_sample_rate_per_tree
:每棵树的列采样率从 0 到 1
广义线性模型(GLM): 一种线性回归,具有灵活的泛化能力,用于处理非线性。
Solver
:要使用的求解算法:auto
、l_bfgs
、irlsm
、coordinate_descent
、coordinate_descent_naive
、gradient_descent_lh
或gradient_descent_sqerr
。Lambda
:正规化强度Alpha
:L1 和 L2 之间的规则化分配
梯度推进机器(GBM) :通过连续细化使用弱决策树的集合(模型集合)
ntrees
:集合的树数learn_rate
:学习率,范围从 0 到 1sample_rate
:行采样率从 0 到 1(默认为 1)col_sample_rate
:列采样率,范围从 0 到 1。
朴素贝叶斯分类器:基于应用贝叶斯定理的强特征独立性假设的分类算法
max_hit_ratio_k
:命中率计算的最大预测数min_prob
:用于观察的最小概率eps_prob
:低于被 min_prob 替换的概率的截止值
参考链接:
模型估计器文档:http://docs . H2O . ai/H2O/latest-stable/H2O-docs/data-science . html # supervised
AutoML:优化变得简单
正如您现在可能已经看到的,选择最佳预测模型可能是复杂且耗时的。您不仅需要确定最佳模型,还需要确定使该模型性能最大化的最佳参数。传统上,我们会通过网格搜索来进行超参数调整,但 H2O 也可以跨多个模型自动完成整个过程。
自动机器学习(AutoML)通过训练各种模型来自动化选择最佳模型的过程,使那些没有该领域专业背景的人能够像传统方法一样产生高性能的模型。想想 sci-kit 学习管道,只是更大更好。
目前,H2O 版本 3.16 中的 AutoML 支持以下模型:随机森林、极度随机森林、深度神经网络的随机网格、梯度推进机器(GBM)的随机网格、广义线性模型(GLM)的固定网格,然后训练模型的堆叠系综。
构建自动估计器
我们首先导入 H2O AutoML 函数,并将其用于训练集,以与之前模型相同的方式传递x
和y
列。
from h2o.automl import H2OAutoMLaml = H2OAutoML(max_models=5, max_runtime_secs=300, seed=1)
aml.train(x=x, y=y, training_frame=train)
max_models
:这控制了要构建的模型的最大数量,不包括堆叠的集合模型。max_runtime_secs
:这是在训练模型之前 AutoML 运行的最大运行时间(秒)。
性能赋值
我们可以通过调用leaderboard
属性并将输出存储在 H2OFrame lb
中来查看最佳模型及其在各种指标上的性能,然后我们可以使用head()
函数来查看。
lb = aml.leaderboard
lb.head(rows**=**lb**.**nrows)
输出将包含按 AUC 分数排序的最佳模型列表,并显示适用于分类或回归的几个拟合优度指标。
Leaderboard Output with Maximum Running Time of 300s
我们可以使用排行榜中的最佳模型来预测测试集上的标签,并查看之前显示的其他指标。为此,模型被存储为aml.leader
,并拥有普通分类器所拥有的所有功能和属性。
y_hat = aml.leader.predict(test)
aml.leader.auc()
aml.leader.confusion_matrix()
AutoML 文档:http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html#
进入生产阶段
H2O 的一个更大的好处是,所有经过充分训练的模型都可以存储为对象,可以很容易地部署到其他 Java 环境中进行实时评分。
为此,H2O 可以将模型转换为ModelObjectOoptimize(MOJOs)。与普通旧 Java 对象(POJO)不同,mojo 没有大小限制,并且比 POJO 速度更快,占用的磁盘空间更小。产生一个H2O-genmodel.jar
文件作为输出,它是一个支持计分的库,包含所需的阅读器和解释器。将 MOJO 模型部署到生产环境中时,也需要这个文件。
下面的代码将 mojo 和h20-genmodel.jar
文件下载到用户指定的路径。
model.download_mojo(path='pathname', get_genmodel_jar=True)
有关如何在生产中访问模型的更多信息,请参见下面的 H2O 文档。
生产文档:http://docs . H2O . ai/H2O/latest-stable/H2O-docs/productionizing . html #
离别的思绪
到目前为止,您已经熟悉了 python 中 H2O API 的基础知识,在 StackOverflow 和文档的帮助下,您应该能够使用 Python 启动和运行 H2O,构建和训练模型,评估其性能,甚至研究部署。
在这个过程中,我发现相对于其他来源,可以从 H2O 文档中获得资源。不要低估 StackOverflow,但也不要指望在那里找到所有问题的答案。
如果您有任何问题,请告诉我们,我们很乐意在您开始使用 AutoML 和 H2O.ai 时提供更多资源。
人工智能遇上物联网。
Photo by NeONBRAND on Unsplash
我们需要做的是创建一个准确的和有效的机器学习模型,这需要大量的高质量和相关的数据。物联网设备有潜力产生大量数据,然后可以与人工智能一起使用。想象一下面部识别系统使用摄像头取代普通支付,或者回忆一下当前对自动驾驶汽车使用内置传感器收集周围数据的大肆宣传。这些解决方案同时使用了人工智能和物联网,但很少有人研究如何轻松地将它们集成在一起。幸运的是,现有的物联网平台提供了从各种设备收集数据的接口,并可以提供一种相对简单的方法来将物联网数据利用到 AI/ML 系统中。本文将为您提供一些最先进的人工智能+物联网示例,概述最流行的物联网平台以及它们如何与您的人工智能/人工智能系统集成。
如果您有任何问题或反馈,请随时通过 Linkedin 或通过我的个人网站联系我。
人工智能+物联网示例
为了让你更好地了解人工智能如何与物联网结合使用,我列出了 3 个使用这两种技术的商业案例。
ET 城市大脑
Photo by Robert Bye on Unsplash
由阿里云创建的 ET 城市大脑是一个复杂的人工智能平台解决方案,可以优化城市公共资源的使用。它已在中国杭州成功实施,汽车流量减少了 15%。该解决方案还有助于检测道路事故、非法停车,并通过改变交通灯来帮助救护车更快地到达患者,从而支持救护车更快地到达目标。这是一个出色的软件系统,它利用了整个城市的交通灯摄像头,并根据机器学习模型的输出,可以确定交通灯应该如何改变[1]。
特斯拉的自动驾驶
Photo by Bram Van Oost on Unsplash
特斯拉自动驾驶系统将 GPS、摄像头、声纳和前视雷达与专门的硬件结合在一起,以充分利用耦合到神经网络架构中的数据。它作为一个自我封闭的系统工作,从传感器收集数据,然后使用神经网络模型来帮助确定汽车运动的下一个变化。
教室监控系统
Facial Recognition System — http://en.people.cn/n3/2018/0519/c90000-9461918.html
虽然这可能会引起一些争议,但该系统已经在中国杭州的一所高中实施。教室摄像头每 30 秒扫描一次房间,该算法能够确定学生的情绪(快乐、悲伤、无聊等)。),以及学生的行为(阅读、写作、举手等。).据该校副校长称,该系统由当地管理,关注的是全班而非单个个人的行为。这里,数据由摄像机收集,图像识别步骤在本地服务器上执行[3]。
这些例子显示了如何通过使用人工智能和从物联网设备流出的数据来解决复杂的逻辑问题。随着对这些解决方案需求的增加,构建这些系统的工具变得越来越容易获得和方便使用。在下一段中,您将了解到您拥有哪些选项来构建 AI/IoT 系统。
具有人工智能功能的物联网平台
物联网平台越来越受欢迎,因为它们为从物联网设备流出的数据提供了各种有用的工具和云存储选项。我不会深入讨论如何建立 AI+IoT 项目的技术细节,因为这不是本文的目的。相反,我的目标是让您大致了解每个平台都提供了什么。
Azure 物联网
Azure IoT 有一个 Github 知识库,它是为了帮助你轻松集成 AI 和 IoT 而创建的。这个代码库提供了关于如何一起使用机器学习和 Azure IoT Edge 的不同代码示例。深度学习模型可以封装在 Azure IoT Edge 兼容的 Docker 容器中,然后使用 REST APIs 暴露给数据。或者,可以将它部署在云上,然后使用 REST APIs 进行预测。Azure IoT 有很多有用的教程和案例,可以在他们的网站上找到。
谷歌云物联网
谷歌云物联网是一个令人印象深刻的物联网平台,它使你能够以多种不同的方式将数据与机器学习模型联系起来。它提供了一整套具有机器学习功能的边缘/内部计算工具,类似于 Azure IoT。谷歌还创建了一个单独的人工智能平台,以便你可以在那里训练模型,以及物联网数据的云存储选项。很少有有用的教程:例如,这个解释了如何将 ML 模型部署到物联网设备上,该设备根据即将到来的新数据进行自我更新。
AWS 物联网
知名的 AWS 也提供 AI+IoT 解决方案。AWS 物联网分析尤其有趣,因为它提供了数据准备、可视化和机器学习工具。可以使用亚马逊 Sagemaker 训练机器学习模型,然后将其容器化,以便可以用于来自物联网设备的数据流。ML 模型也可以直接上传到运行速度更快的设备上,并且可以根据新输入的数据自动更新[4]。
参考
[1]https://www.alibabacloud.com/et/city
http://en.people.cn/n3/2018/0519/c90000-9461918.html
人工智能、音乐和人类的崇高
Hannah Fry 在她的书“Hello World”中谈到了计算机如何被编程以近乎完美地模仿音乐。一个程序完美地模仿了巴赫的音乐词汇——包括他在所有作品中使用的音符、单词和短语。
即使是最精明的音乐家也永远无法获得巴赫的这种“数据视角”。我们可能熟悉他最喜欢的音符、音调和措辞。如果我们熟悉巴赫,就会对“巴赫性”有一个很好的概念。但是被编程来分析巴赫的机器也以他们自己的方式理解巴赫。例如,他们知道 g 后面可能是什么音符。他们可以分析音符序列,并复制它们。
这个机器学习实验的结果是,通过机器学习创造出来的假巴赫作品愚弄了很多巴赫专家。他们对此感到很难过。他们不应该。
机器 1,人类 0。
虽然我们目前在分析庞大的数据集方面可以被打败,但机器仍然无法与我们的直觉和创造力相匹配。人类可以获得美学上的崇高。我们可以触摸、感受和听到美。巴赫对我们有意义,但对制造假巴赫的机器没有意义。
问题是:机器创造的巴赫真的是假的巴赫吗?如果一个现代音乐家要创作一首类似巴赫的作品,他们显然会使用他们所知道的巴赫元素来创作一些新的东西。这也准确地描述了机器正在做什么。也许这是一个平局。
也许机器已经和我们一样有创造力了。
创造力的一个很好的定义是:
创造新事物。
用所有可用的材料制造新的东西,是一个稍微扩大的定义。把两个以前从来没有并列过的东西并列起来,用所有可用的材料做出新的东西,是另一种说法。
我看到了创造力,就像庞德,他这样表达了意象派诗人的特权:
机器辅助的巴赫作品无疑是新的。他们采用现有的元素,并以新的方式将它们拼凑在一起,创造出与巴赫没有区别的新作品。
机器有创造力。
如果你把创造力定义为人类的领域,完全有可能认为机器没有创造力。当我们做创造性的工作时,我们经常会有情绪。
朱尔斯·博宁-杜查姆是这样联系创造力和情感的:
这台机器并不敬畏巴赫,但我们敬畏。我们看到了崇高、审美价值和真正的美。如果我们对创造性的想法附加任何情感,那么,不,机器一点也不具有创造性。
人类 1,机器 1
我们的另一个优势是我们能够看到以前从未联系过的事物之间的联系。这台机器在这里不是这样做的:它获取现有的巴赫乐谱并进行分析。但是我们呢?如果我们愿意,我们可以把巴赫和金属乐队混搭在一起。如果我们愿意,我们可以把巴赫和德雷克混在一起。
更严重的是,我们可以利用巴赫现有的元素,并以新的方式使用它们,创造新的音乐形式,事实上这种情况一直都在发生。音乐的历史是形式的不断重复。
我怀疑巴赫会对几个世纪以来古典音乐的所有创新感到震惊。
在创造力的其他领域,我们认为人类的创新是创造新事物的关键。诗人用新的方式把单词串在一起。视觉艺术家尝试新的笔触,新的雕刻方式。音乐家添加不协和音、和弦变化和适合歌曲的乐器。
下面是大理的龙虾电话:
我不确定有哪台电脑会把一只龙虾和一部电话组装在一起。为什么会这样?这个奇异而超现实的雕塑震撼着观者,带我们走出熟悉的世界,这就是超现实主义的意义。
超现实主义电脑艺术?
也许超现实主义的电脑艺术在摄影领域是可能的。他们可以把照片分解成像素,然后重新组合。
超现实主义诗歌是可能的,尽管我们不需要电脑,我们可以让一群猴子坐在打字机前:
Infinite Monkey Theorem-Wikipedia.
此外,计算机会说出类似艾米莉·狄金森的话吗?
我在脑中感觉到一场葬礼。
迪金森女士是什么意思?她头疼吗?她抑郁吗?
某个地方的某个人可能正在编写一个 Dickinson 模拟器。它会检查她的用词、措辞、行长和诗的长度,它会做得很好。
但是它会达到崇高吗?它会像迪金森一样让我们震惊吗?让我们带着敬畏和惊奇保持沉默?我对此非常怀疑。
诗人 1,机器 0。
尼克·凯夫谈到美和超越,并将其置于我们的人性中。
[## 音乐、感觉和超越:尼克·凯夫论人工智能、敬畏和人类局限性的辉煌
“一首好歌带给我们的是一种敬畏感…敬畏感几乎完全基于我们的…
www.brainpickings.org](https://www.brainpickings.org/2019/01/24/nick-cave-music-ai/)
我觉得那个山洞是对的。我觉得没有机器会创作出一首像凯夫的《死囚第一人称忏悔》那样病态、扭曲、阴险的歌曲,因为找不到一个更好的词,“仁慈的座位”:
我们人类可以想象坐在电椅上等着被油炸会是什么样子。我想知道叙述者做了什么。我对歌曲中的众多歌词感到敬畏。我不相信它们是机器写的。你需要关于上帝、邪恶和死刑的高深知识来写这首歌。
这首歌是凯夫的独唱。一个洞穴模拟器可以捕捉他的话语、措辞和旋律,就像它可以捕捉狄金森的一样,但它永远不可能是真正的洞穴。
我的第二个例子是苏菲洋·斯蒂文斯的《变形》,每当我听到它时,我都会震惊得屈服:
我感到恐惧。我知道“变形”是什么意思,我也知道这是个好东西,但是我觉得害怕这首歌。它属于超验宗教音乐的范畴,而机器还不能接触到精神层面。知道这首歌是圣经也有帮助,尽管无疑有许多圣经分析算法。但是世界上所有的算法都无法让你在 4 分钟内感受到这首歌的效果。
我可以继续,但这只是两个例子。
机器会不会从嘻哈音乐中跳出来,用程序控制的鼓点在每个小节上跳跃,来捕捉音乐呢?人类不得不这样做。
机器能像尼尔·杨一样弹吉他吗?尼尔·杨的主要音乐会吉他在我的脑海中形成奇怪的反馈模式。机器能复制吗?
在鲍勃·迪伦的《铁轨上的血》中,你可以听到他的纽扣敲击他的木吉他。机器会把它编辑掉吗?大概吧。
我认为我们在创造力方面仍然比机器有优势。我们进行创造性的飞跃,发明新的类型,把不同的元素放在一起,看看什么是有效的。如果未来是真正的人类,而不是算法,我们需要坚持下去。
现在,让我们宣布比赛开始:
人类 2,机器 1。
我们认为不仅仅是 0 和 1。我们有尼克·凯夫、鲍勃·迪伦、艾米莉·狄金森、萨尔瓦多·达利和 Qtip。我们有太阳的外星探险,我们有杰瑞·加西亚。
@ MatthewOldridge 试图“创造新事物”,至少每天都有几分钟。
商业中的人工智能机遇与挑战
●寻找企业在实施人工智能方面面临的机遇和挑战?
●对是否在你的业务中开始基于人工智能的开发感到困惑?
●人工智能如何影响你的业务增长和利润?
在这里,在这个博客里,你会找到所有这些问题的答案。开始吧!
人工智能是一项连外行都很好奇的技术!原因在于它有扰乱生活方方面面的强烈倾向。人工智能似乎集体散发出热情和怀疑。显然,在不同的措施!
在此之前,让我们看看人工智能的一些统计数据和事实:
●人工智能技术可以将企业生产率提高多达40%【埃森哲】
●自 2000 年以来,人工智能创业公司的数量已经放大到 14 倍。 (福布斯)
●人工智能将自动化 16% 的美国工作岗位【Forrester】
●15%的企业正在使用人工智能,其中 31%的企业表示这是他们未来 12 个月的计划【Adobe】
的确,人工智能不再仅仅局限于创新实验室。它因其改变商业的惊人潜力而受到称赞。然而,在发现这项技术的真正潜力之前,企业需要应对某些挑战。
人工智能在商业中的实施面临着几个挑战
1。计算并没有那么先进
看起来最有益的机器学习和深度学习技术需要非常快速地进行一系列计算(微秒或纳秒或更慢!).
它清楚地表明,这些人工智能技术利用了大量的处理能力。
AI 已经在专家讨论很久了。结果总是没有足够的力量来实现这些人工智能技术。
云计算和大规模并行处理系统为短期内实施这些技术带来了希望,但随着数据量的增加,深度学习转向自动创建越来越复杂的算法,云计算将无济于事!
What really is Artificial Intelligence about?
2。支持的人少了
AI 实现在市场上没有足够的用例。没有它,没有组织会有兴趣投资人工智能项目。这显然意味着,相对而言,很少有组织有兴趣投资开发基于人工智能的产品。
此外,世界上没有足够的人能够让其他企业理解机器动力进步的愿景。简单地说,我们可以说,知道如何操作会思考和自学的机器的人不够多。
对于这个问题的补救措施,一个温和的疗法是公民数据科学家。但这也不是永久或真正的解决办法。另一种选择是转向提供允许人工智能驱动的工作“作为服务”的平台和工具。组织能够采用现成的解决方案并插入自己的数据,而不是从头开始。
3。建立信任
人工智能的问题在于,它对人来说就像一个黑匣子。当人们不理解决策是如何做出的时,他们会感到不舒服。例如,银行使用基于线性数学的简单算法,这种算法很容易解释,也很容易解释它们是如何从输入到输出的。
因此,人工智能还不能在人们之间建立信任。而看起来这个问题唯一的解决办法就是让人们看到这个技术真的管用。然而,现实却有些不同。这表明,通过更准确的预测,有很多机会让事情变得更好。
这就产生了政府越权的问题。假设,该法规的一部分告诉公民可能有权要求解释在人工智能的帮助下做出的关于他们的决定。
4。一根筋
应该考虑的一个大问题是,大多数人工智能实现都是高度专业化的。我们也把专业化的 AI 称为“应用型 AI”。它的建立只是为了完成一个单一的任务,并不断学习变得越来越好。
它遵循的过程是查看给定的输入和产生的结果。它会查看产生的最佳结果,并记下这些输入值。广义的 AI 则不同,可以跳转到任何类似于人类的任务。然而,未来还没有到来。
这只是意味着人工智能需要接受培训,以确保他们的解决方案不会引发其他问题。具体来说,所有超出他们设计考虑范围的领域。
5。可证明性
从事基于人工智能的产品的组织无法清楚地展示他们的愿景,以及他们在人工智能技术的帮助下取得的成就。人们怀疑这项技术,它是如何做决定的,它的所有决定是否完美!
此外,这种困惑已经包围了人们的头脑。最终,概率,即人工智能预测背后的数学不确定性,仍然是组织的一个不清楚的领域。
他们无法证明人工智能系统的决策过程是正确的。它唯一的补救办法就是让人工智能变得可解释、可证明和透明。组织应该实现可解释的人工智能。
6。数据隐私和安全
大多数人工智能应用程序都基于海量数据来学习和做出智能决策。机器学习系统依赖于通常在本质上是敏感的和个人的数据。
这些系统从数据中学习并自我完善。由于这种系统化的学习,这些洗钱系统很容易出现数据泄露和身份盗窃。欧盟已经实施了《通用数据保护条例》( GDPR ),确保个人数据的完整保护。
这一步是在考虑到客户对越来越多的机器决策越来越了解之后采取的。此外,还有一种被称为联合学习的独特方法,旨在扰乱人工智能范式。
这种联合学习将鼓励数据科学家在不影响用户数据安全和保密的情况下创建 AI。
7。算法偏差
人工智能系统的一个大问题是,它们的好坏取决于它们接受训练的数据量。不良数据通常与民族、社区、性别或种族偏见有关。
专有算法被用来找出诸如谁批准保释,谁的贷款被批准等事情。如果隐藏在做出关键决策的算法中的偏见未被发现,可能会导致不道德和不公平的结果。
在未来,这种偏见将会更加突出,因为许多人工智能系统将继续被训练来利用坏数据。因此,从事人工智能工作的组织面前的迫切需要是用无偏见的数据训练这些系统,并创建可以容易解释的算法。
8。数据稀缺
事实上,组织现在比以往任何时候都可以访问更多的数据。但是,适用于 AI 应用学习的数据集真的很少。然而,最强大的人工智能机器是那些经过监督学习训练的机器。
这种训练需要带标签的数据。标记的数据是有组织的,以使机器可以理解学习。关于标记数据的另一个问题是它有一个限制。未来自动创造越来越难的算法只会使问题恶化。
尽管如此,还是有一线希望。随着时间的推移,组织正在投资于设计方法,并专注于如何创建人工智能模型,尽管标记数据很少。
更多关于人工智能风险的信息
这里有一个 youtube 视频,你可以查看一下,以便快速了解商业中人工智能的几个风险。这段 YouTube 视频解释了人工智能的十大可能风险:
<iframe width=”560" height=”315" src=”https://www.youtube.com/embed/1oeoosMrJz4" frameborder=”0" allow=”accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>
===================================
人工智能在商业中的机遇
是的,在商业中实施人工智能存在风险和挑战。但是,就像一枚硬币的两面一样,人工智能也给企业带来了一些机会。由于与人工智能相关的机会,许多企业雇佣专门的印度开发人员来开发他们自己的基于人工智能的应用程序。让我们一个一个来看看。
1.营销中的人工智能
这是每个小企业的梦想,以最大限度地提高其营销预算,并集中在高成就的营销战略。此外,每个企业都想了解哪些营销活动能带来最高的投资回报。
但是需要花费大量时间来监控和分析所有媒体渠道的数据。这里,AI 营销解决方案的作用就来了!
Acquisio 等人工智能平台可以轻松帮助管理各种渠道的营销业务,如谷歌 Adwords、脸书和必应。
该机器学习层在情感分析算法的帮助下分析实时活动数据,并建议产生最佳结果的营销活动分布。
它自动进行常规投标并监控整体营销支出,以便企业主可以减少跟踪营销活动所花费的时间,并关注其他重要领域。
2.利用人工智能技术追踪竞争对手
跟踪你的竞争对手在做什么总是至关重要的。不幸的是,大多数企业主由于繁忙的日程安排而无法回顾比赛。在这里,人工智能的作用就出现了。
还有蜡笔之类的各种竞争分析工具。他们借助网站、社交媒体和应用程序等不同渠道追踪竞争对手。此外,他们为企业主提供了密切关注竞争对手的营销计划的任何变化,如价格变化,微妙的信息修改和公关活动。
3.轻松处理大数据
小企业主愿意利用大量在线和离线信息来做出明智的、数据驱动的决策,从而推动业务增长,这并不奇怪。
人工智能驱动的商业工具最有趣的地方在于,它们可以适用于每一个数据生成工作流,并提供非常适用且可操作的深入见解。
像 Monkey Learn 这样的人工智能商业工具可以整合和分析各种渠道的数据,并实现省时的分析和报告,如 Google Sheets、CSV 等中的情感分析。
4.人工智能集成客户支持解决方案
自动聊天系统允许小型企业扩大他们的客户服务工作,并腾出资源用于更困难的客户互动。
像 DigitalGenius 或 ChattyPeople 这样的人工智能客户服务解决方案建议或自动回答客户提出的问题,对帮助单进行分类,并将询问或消息导向适当的部门。
当你在客户支持中使用人工智能时,平均处理时间会大大减少。此外,它增强了客户服务团队的整体响应能力。
5.CRMs 中的人工智能
如果您找到一种方法将您的 CRM 提升到一个新的水平,并获得有价值的见解来帮助管理与现有和潜在客户的互动,您会有什么感觉!
嵌入了人工智能功能的 CRM 平台可以进行实时数据分析,以便根据您公司独特的业务流程和客户数据提供预测和建议。
==================================
结论
因此,我们发现人工智能的时代可能终于到来了,但还需要更多的进展。不同公司和行业对人工智能的采用也不均衡。
此外,我们研究了企业在实施人工智能时面临的所有机遇和挑战。现在,我希望你清楚你是否应该在你的公司 从事人工智能(AI)开发。
如果你希望创建基于人工智能的应用程序,你可以联系一家知名的网络开发公司,让你的梦想成真。有许多公司提供基于人工智能的软件来提高客户服务部门的效率。
人工智能,我们在紧张的电网中最好的朋友
人工智能和其他转型技术,是不断增长的分布式能源资源(DERs)所必需的,特别是在飙升和更大的风暴背景下
Photo by Nathalie SPEHNER on Unsplash
在当今多元化的能源世界中,越来越多的个人消费资产增加了电网的复杂性。在不断变化的气候中越来越多地产生巨大风暴的情况下,这一点甚至更加重要,例如今年早些时候在菲律宾、台湾和中国造成 93 亿美元损失(已知第五大太平洋台风)和 90 多人死亡的台风利奇马,或者最近在大西洋发生的可怕的 5 级飓风多里安。巴哈马旅游和航空部总干事 Joy Jibrilu 详细介绍了飓风 Dorian 造成的破坏,以及巴哈马需要采取的措施,特别是在基础设施方面。(来源 https://www.youtube.com/watch?v=c_8sLpTQq_EMSBC)
这看起来和我们两年前在波多黎各看到的太相似了,波多黎各遭受了 5 级飓风玛丽亚的严重破坏。损失累计达 920 亿美元,是美国历史上损失第三大的热带气旋。玛丽亚造成的停电被认为是美国历史上最大的停电,也是世界历史上第二大的停电。
Source: DOE, National Academies, NERC
CosmiQ Works 开发了一种有趣的数据融合绘图方法,并首次对波多黎各电力和基础设施的恢复情况进行了独立的遥感评估。
飓风后波多黎各电力和基础设施恢复的遥感时间序列评估…
medium.com](https://medium.com/the-downlinq/a-remote-sensing-assessment-of-electrical-and-infrastructure-recovery-in-puerto-rico-following-66f5faf414fc)
通过分析全岛观察到的亮度下降水平,这家 IQT 实验室能够确定截至 2018 年 5 月 31 日,13.9%的人仍然缺乏电力,13.2%的基础设施已经失去。
分布式与集中式
拥有太阳能发电、风力涡轮机和电动汽车的分散式系统为脱碳的未来提供了希望,但也为公用事业公司和消费者带来了挑战,但它们需要妥善规划和运营才能生存,或者至少在这样一场灾难性的灾难发生后及时重启。
能源电网的转型、新服务的出现、新参与者: prosummers 、consumer ’ actors以及自我消费等新模式,改变了电网本身的运营要求和约束,并对日益庞大的数据进行管理,如果不求助于人工智能,这些数据将无法工作。
能源市场正在脱离只有集中式发电厂的模式,进入分布式电网和点对点市场的时代。能源生态系统的多种元素正以令人眩晕的速度进化。我们看到一个非常复杂的市场正在形成,配电公司需要允许越来越多的可再生能源和灵活的能源资产安装在电表后面,同时保持稳定的本地电网。与此同时,安装了这种灵活资产的专业消费者希望优化他们的能源流动,以实现投资价值的最大化。
一个日益严峻的挑战是分散发电的出现和加速发展,在这种情况下,私人用户,无论大小,都可以利用风能和太阳能等可再生能源发电和使用自己的电力。这使得供求关系变得复杂,迫使公用事业公司从私人用户那里购买多余的能源,这些用户生产的电力多于他们消耗的电力,然后将这些电力送回电网。自 2010 年以来,太阳能的使用大幅增加,预计这一指数趋势将随着光伏电池(利用阳光发电的设备)的出现而继续,从而降低成本并提高效率。
Source: Novacab Multiple DERs with Hybrid Energy Storage and Artificial Intelligence.
扩大分散生产
当前系统的设计一般没有考虑到能源的多样化,特别是可再生资源的增加。例如,在许多美国管辖区,当需求超过供应时,公用事业公司提前几分钟启动以化石燃料为基础的发电厂,即所谓的“最先进”发电厂,以避免连锁灾难。这个过程是最昂贵的,但也是这些公司最赚钱的部分。这导致消费者支付更高的电费,并增加向大气中排放的温室气体。随着未来几年能源需求的大幅增长,这些问题将会加剧。为了避免 IES 的这些非最佳(至少)运行模式,AI 可以启用自动学习算法,结合这些复杂网络上的数据和实时气象数据(来自卫星、地面观测和气候模型),充分利用这些算法来预测可再生能源产生的电力,如风、太阳和海洋。
结合大数据、云和物联网(IoT)等其他技术,人工智能储能可以通过提高电源的可访问性,在电网管理中发挥重要作用。可再生能源。
Source: Smart Phases Power Generation with and Artificial Intelligence.
(深度)学习曲线
人工智能可以极大地帮助管理电力消耗,以便大型公用事业公司或更小的电网可以在价格昂贵时出售,在价格便宜时购买。在这种情况下,机器学习,尤其是深度学习算法可以以一种非常有趣的方式应用于能源领域。随着最终用户成为“专业消费者”,智能设备激增,大数据可供分析,可再生能源不断增长,商业模式和法规也在不断调整。
将所有这些结合在一起有助于达到能量流动和/或储存的最佳时机、方向和容量。通过人工智能算法来确定何时生产、消耗、储存和交易能源,以实现最终用户、服务提供商和电网运营商的成本效益。随着成千上万个新兴能源社区的出现,这一愿景可能会变得更加清晰,甚至可能成为未来 5 到 10 年的主要现实。
越来越多的可持续社区、公用事业和运营商目前正处于模拟阶段或试点项目的第一阶段。预计到 2025 年,物联网(IoT)将需要超过 100 亿个智能设备和超过 1 亿辆电动汽车(公交车、卡车和乘用车),超过 10 亿个专业消费者(私人和工业)拥有自己的“生产”千瓦时(太阳能或其他),这将是维持可靠性、安全供电和电网稳定性的巨大挑战。
对 DERs 在未来几年的发展有多种预期。但这些变化需要全新的运营范式,没有比现实生活更好的技术考验了。涉及人工智能、储能和可再生能源的新模式已经在各大洲的许多国家得到不同程度的应用,更不用说澳大利亚、加利福尼亚、德国、中国、哥斯达黎加、以色列和世界上许多其他国家了。
当我们面对一个对人类干预做出反应的气候时,尤其如此。人工智能与可再生能源和能源储存的正确使用不仅可以帮助我们减少能源消耗对二氧化碳排放的影响,还可以适应日益增长的灾害影响(与人为气候变化有关)。
设想 AI 和 DER 将成为变革性技术,很快成为我们制作新网格模型的最好朋友,这并不需要通灵。
Photo by James Peacock on Unsplash
本文是由荷兰的夏羽·比洛多撰写的关于人工智能和能量储存的系列文章的延伸。工程博士,对外经济合作中心。创始人&首席技术官、Smart Phases ( Novacab )、加拿大工程师协会会员以及能源中心和媒体的专家撰稿人。
人工智能和古生物学:利用深度学习搜索微体化石
如何用语义分割分析从钻机探头获得的沉积岩微断层图像
在这篇文章中,我们展示了一种基于深度学习的方法,用于通过 MicroCT 获取的钻孔岩心样本中的全自动微体化石识别和提取。对于鉴定,我们开发了一种深度学习方法,这种方法导致了高正确微化石鉴定率(98% IoU)。为了验证这一点,我们使用了微体古生物领域的专家们得出的基本事实。我们还提出了第一个完全注释的 MicroCT 获得的公开可用的微体化石数据集。
人工智能和古生物学
古生物图像的计算分析的应用范围从动物、植物和微生物进化的研究到给定时代生物栖息地的模拟。
但是现在古生物学不再仅仅是一门纯科学了。它还可以应用于解决经济活动领域中的问题,例如石油勘探,其中有几个因素需要分析,以便识别勘探地点的潜力并最小化与石油开采过程相关的费用。一个因素是要探索的环境的特征。这种分析可以通过几种方式进行:使用探针、提取样品进行岩石物理成分评估或与其他钻井的测井记录进行对比。
当我们研究样本提取时,在沉积岩中发现的化石对于这种岩石的表征至关重要。在这里,计算机断层扫描(CT)是重要的,因为它保存样本,并使其可用于几次分析。基于由 CT 生成的 3D 图像,可以执行若干分析和模拟,并且可以自动执行当前手动且费力执行的过程。
想象一下下面的场景:一个古生物学家收到一个含有微化石的岩石样本进行分析。人工分离微生物化石的整个过程需要很长时间,并且在这个过程之后,岩石样品被破坏。在此之后,古生物学家将使用显微镜对物理隔离的微化石进行分析,并对每个隔离的化石进行人工分类。
A few microfossils manually extracted from our carbonatic rocks and photographed with a Z-stack microscope
现在让我们假设这位古生物学家工作的公司获得了一种基于人工智能的断层图像分析软件,专门用于微化石分析。该软件在最少或根本没有监督的情况下,自动从岩石样品中进行微生物化石鉴定和提取。古生物学家现在可以加载他的断层扫描样本,选择特定的管道,并让程序在夜间执行,只让古生物学家评估获得的结果并对每个提取的微化石进行分类。
The before & after of microfossil analysis…
基于深度学习的微体化石识别和分类
你可以通过深度学习采用语义分割来执行上述工作流。让我们看看如何…
我们采用了一个扫描的碳酸盐岩样品,该样品是从巴西东北海岸的 Sergipe 盆地第四纪沉积物处采集的钻机探针获得的。为了训练我们的语义分割网络,一个微体学家团队为这个岩石样本生成了一个地面真相,对整个 MicroCT 体积进行手动分割和分类。用于数字化样品的扫描仪是 Versa XRM-500 (ZEISS/XRadia),体积大小为 956×1004×983 体素。
完整的数据集,加上额外的解释和专家注释的手动分割图像的基本事实可以在这里找到:【http://www.lapix.ufsc.br/microfossil-segmentation。
Digitalized rock sample
我们采用的深度学习 API 是 fast.ai/PyTorch 框架,通过超参数优化(HYPO),我们用 UNET + ResNet34(或 ResNet50)获得了 0.98 的 IoU。不同种类的海波在这里很重要,我们将在下面解释它们。
海波#1:可变分辨率。MicroCT 数据提出了一个挑战:由我们使用的数据集大小和 UNET 体系结构强加的内存需求将极大地限制我们训练集的批量大小。为了克服这一限制,并能够最初处理更大的批量,以更快的速度训练网络,我们采用了一种 逐步渐进提高图像分辨率的训练策略 。
为此目的,我们在三个周期中进行训练:我们以原始 MicroCT 图像分辨率的 1/4 开始我们的迁移学习;训练了模型;将数据集的大小调整为原始分辨率的 1/2;再次训练,之后,我们采用全 CT 体积分辨率进行最终微调训练周期。这一战略的大纲最初是由杰瑞米·霍华德于 2018 年 5 月在这个讨论帖子中提出的,后来在https://course.fast.ai/videos/?lesson=1的一次 CNN 演讲中作为非正式交流提出的。下图显示了我们对逐步提高分辨率培训工作流程的解释。
The step-wise progressive improving image resolution training strategy
HYPO #2:差异学习率:另一个微调我们模型的策略是差异学习率 (DLR)策略,也是由杰瑞米·霍华德在同一个 fast.ai 课程系列的讲座中非正式提出的。
当执行迁移学习并随后进行微调时,在第一层中,被调整的预训练模型将从迁移学习中使用的新数据集学习一般的低级特征。不管图像背景如何,这些低级特征很可能与原始数据集的特征相似。因此,没有必要在这些第一层采用高学习率。随着信息在网络中的深入,特征组合变得更加复杂和特定于数据集,并且与应用环境的联系更加直接。为了使网络更好地适应特定于上下文的特征,需要在更深的层中有更高的学习速率。
HYPO # 3: Fit1Cycle :我们采用 Leslie N. Smith 最初开发的 fit1cycle 方法训练网络;
- https://docs.fast.ai/callbacks.one_cycle.html
- 神经网络超参数的训练方法:第 1 部分——学习速率、批量大小、动量和权重衰减—https://arxiv.org/abs/1803.09820
- 超收敛:使用大学习率快速训练残差网络—https://arxiv.org/abs/1708.07120
- 有一篇来自 Nachiket Tanksale 的非常有趣的文章,名为寻找好的学习率和一个周期政策,其中讨论了周期学习率和动量。
这种方法快,它将允许我们在第一个迁移学习阶段只使用 5 个时期。
如果你想了解更多关于 fastai 图书馆新的学习 API 的信息,请看这本由 Sylvain Gugger 准备的笔记本。
动手吧!碳酸盐岩中微体化石的分段
以下是从碳酸盐岩中获得的微 CT 钻孔岩心中的微化石样品的语义分段代码。这是我们作为笔记本发布的代码(https://github . com/awangenh/Segmentation-of-micro fossils-in-Carbonatic-Rocks),它假设您要么使用 Google Colab,要么安装了最新版本的 PyTorch 和 fast.ai。你还需要一个至少有 11 GB 内存的 GPU。
初始化,导入 Python 库和 fast.ai 框架
# Notebook Initializations
%reload_ext autoreload
%autoreload 2
%matplotlib inline# Imports
from fastai.vision import *
from fastai.utils.show_install import *
from fastai.callbacks.hooks import *
from pathlib import Path
torch.backends.cudnn.benchmark=True# Show if everything is OK
show_install()
定义存储数据的位置并检查它
如果你将 Google Colab 与 Google Drive 一起使用,请这样做
from google.colab import drive
drive.mount('/content/gdrive')path = Path('gdrive/My Drive/Colab Notebooks/DL/')
path.ls()
如果您没有从 Google Drive 导入数据
# Adapt this to match your environment...
path = Path('myPath/')
path.ls()
定义数据变量,如 path_lbl(标签所在的本地)和 path_img(存储训练和验证数据的本地)
# Initialize path_lbl (local where your labels are)
path_lbl = path/'train_masks_labels'
# Initialize path_img (local where your train and validation data are stored)
path_img = path/'train'# Check how many files are there
fnames = get_image_files(path_img)
fnames[:3]
len(fnames)# Check if label names match the size
lbl_names = get_image_files(path_lbl)
lbl_names[:3]
len(lbl_names)
显示单个 MicroCT 切片
img_f = fnames[0]
img = open_image(img_f)
img.show(figsize=(5,5))
加载属于该特定切片的遮罩
# Scan the filenames with a simple lambda function
get_y_fn = lambda x: path_lbl/f'{x.stem}_GT{x.suffix}'
显示地面真相遮罩
mask = open_mask(get_y_fn(img_f))
mask.show(figsize=(5,5), alpha=1)
src_size = np.array(mask.shape[1:])
加载您的标签
codes = np.loadtxt(path/'codes.txt', dtype=str); codes
IOU 指标、初始数据分割和模型
# Refer to your labels as numbers
name2id = {v:k for k,v in enumerate(codes)}
定义您的误差指标
并集上的交集(IOU)度量和保存预测定义的函数
def iou_metric(input, target):
target = target.squeeze(1)
mask = target != 0
return (input.argmax(dim=1)[mask]==target[mask]).float().mean()def save_preds(dl):
i=0
names = dl.dataset.items for b in dl:
preds = learn.pred_batch(batch=b, reconstruct=True)
for o in preds:
o.save(path_gen/names[i].name)
i += 1
更多的定义
重量衰减、度量、模型的定义,如果我们使用 imageNet 重量
wd=1e-2
metrics = iou_metric# Use a deep network
used_model=models.resnet101# We will employ transfer learning from ImageNet weights...
useImageNet=True
培训周期和验证
这里是我们开始训练部分的地方。首先,我们采用 256x252(1/4)分辨率。对于 512 (1/2)和 1024(全)分辨率,执行完全相同的顺序。
周期#1: 256x256
# Define the batch size and the resolution employedsize = src_size//4
size[1]= size[1]+1
bs=5
对数据应用转换,如分辨率更改和数据扩充…
normalizePar=Noneif useImageNet:
normalizePar=imagenet_statsdata = (src.transform(get_transforms(), size=size, tfm_y=True)
.databunch(bs=bs)
.normalize(normalizePar))
用所选的数据、度量和重量衰减加载模型
learn = unet_learner(data, used_model, metrics=metrics, wd=wd)
找到最合适的学习速度
lr_find(learn)
learn.recorder.plot()
手动 检查上面代码生成的图形后设置学习率…
# Adjust this LR accordingly to what you identified above...
lr=2e-4
学习!
learn.fit_one_cycle(5, slice(lr), pct_start=0.9)
保存重量并加载它以继续训练并执行一些数据发布…
learn.save('stage1-256x252')
保留一个装载代码,以备不时之需:
learn.load('stage1-256x252')
解冻网络以学习内部权重——在第 1 周期微调
learn.unfreeze()
采用差异学习率(DLR)并培训学习者
lrs = slice(lr/400,lr/4)learn.fit_one_cycle(10, lrs, pct_start=0.8)
保存重量和加载它继续训练和执行一些未使用的内存释放…
# Save the fine-tuned network @ Cycle #1
learn.save('stage2-256x252')# Release Memory
del data
del learn
torch.cuda.empty_cache()
# Collect Garbage
gc.collect()
周期#2: 512x512
我们将如上执行相同的操作,只是分辨率为 512x512
# Set the new Size for the MicroCT Slices
size = src_size//2
bs=1# Adapt ImageNet Parameters to our Image Characteristics
normalizePar=None
if useImageNet:
normalizePar=imagenet_stats
data = (src.transform(get_transforms(), size=size, tfm_y=True)
.databunch(bs=bs)
.normalize(normalizePar))# Create a new Network for 512x512 input images
learn = unet_learner(data, used_model, metrics=metrics, wd=wd)# Load our fine-tuned low resolution network weights learned on Cycle #1...
learn.load('stage2-256x252')# Find the best learning rate for this network instance
lr_find(learn)
learn.recorder.plot()# Manually set the new learning rate (LOOK at the graph above!)
lr=1e-3
使用这个新的中等分辨率网络执行迁移学习阶段。我们将再次使用莱斯利·n·史密斯开发的 fit1cycle 方法。
learn.fit_one_cycle(5, slice(lr), pct_start=0.8)# Save and Load...
learn.save('stage1-512x502')learn.load('stage1-512x502')# Unfreeze for fine-tuning...
learn.unfreeze()
采用差异学习率(DLR)并培训学习者
# Prepare for varying learning rates...
lrs = slice(1e-6,lr/10)# Fine-tune for 10 epochs
learn.fit_one_cycle(10, lrs)# SAVE STAGE2 OF CYCLE #2...
learn.save('stage2-512x502')# Flush garbage..
del data
del learn
torch.cuda.empty_cache()
gc.collect()
周期# 3:1024 x 1024-全分辨率培训
现在我们将再次执行与上面相同的操作,只是分辨率为 1024x1024。我们将采用较短的迁移学习阶段。下面的大多数单元格都没有被注释,因为我们在重复步骤,只是有一些不同的参数…
# Original image size
size = src_size
# Batch size of one!
bs=1normalizePar=None
if useImageNet:
normalizePar=imagenet_stats
data = (src.transform(get_transforms(), size=size, tfm_y=True)
.databunch(bs=bs)
.normalize(normalizePar))learn = unet_learner(data, used_model, metrics=metrics, wd=wd)learn.load('stage2-512x502')lr_find(learn)
learn.recorder.plot()# Adapt it to your values
lr=2e-5# Transfer learning stage
learn.fit_one_cycle(3, slice(lr), pct_start=0.8)# Save stage 1 of Cycle #3
learn.save('stage1-1024x1004')learn.load('stage1-1024x1004')# Prepare for the final fine-tuning
learn.unfreeze()# Prepare for varying learning rates
lrs = slice(1e-6,lr/10)# Fine-tune for 10 epochs
learn.fit_one_cycle(10, lrs)# Save stage 2 of Cycle #3
learn.save('stage2-1024x1004')
显示一些预测结果
learn.show_results(rows=2, figsize=(10,10))
保存所有预测结果
name_gen = 'image_gen'
path_gen = path/name_gen
path_gen.mkdir(exist_ok=True)save_preds(data.fix_dl)
如果培训中途中断,我该怎么办?
如果你的训练被打断了,你会怎么做?这可能是因为你在 Google Colab 笔记本上达到了连续 12 小时的“免费”操作时间,或者因为你的计算机由于某种原因停止了。我住在巴西,电力短缺是常事…
fit_one_cycle 方法适用于变化的自适应学习速率,遵循速率先增大后减小的曲线。如果你中断第 10 个纪元的训练,比如说 20 个纪元,然后重新开始 9 个以上的纪元,你将不会得到与不间断训练 20 个纪元相同的结果。您必须能够记录您停止的位置,然后从该点重新开始训练周期,并使用该周期部分的正确超参数。
A fit_one_cycle training session divided into three subsessions. Image by PPW@GitHub
你要做的第一件事就是保存你的网络:
learn.fit_one_cycle(20, max_lr=slice(1e-5,1e-6),
callbacks=[SaveModelCallback(learn, every='epoch',
monitor='accuracy', name='saved_net')])
这将使您的网络在每个纪元都被保存,您提供的名称后面跟着*_ #纪元*。所以在纪元#3,文件 saved_net_3.pth 将被写入。您可以在完成以下操作后加载此文件:
- 重新创建了数据束和
- 用它重新实例化了网络。
重装完后。pth 文件,你可以重新开始你的训练,只是你要告诉 fit_one_cycle 考虑 20 个历元,但是要从历元#4 开始训练。
要了解这是如何做到的,请看这里:
你是怎么做到的?
fast.ai 中的 fit_one_cycle 方法已经开发出来,允许您告诉它从周期的哪个部分恢复中断的训练。恢复培训的代码如下所示:
# Create a new net if training was interrupted and you had to
# restart your Colab sessionlearn = cnn_learner(data, models.<your_model_here>,
metrics=[accuracy, error_rate])# If you're resuming, only indicating the epoch from which to
# resume, indicated by ***start_epoch=<epoch#>*** will load the last
# saved .pth, it is not necessary to explicitly reload the last
# epoch, you only should **NOT** change the name given in
# name=<callback_save_file>:
# when resuming fast.ai will try to reload
# ***<callback_save_file>_<previous_epoch>.pth***
# Unfreeze the network
learn50.unfreeze()# Use start_epoch=<some_epoch> to resume training...
learn.fit_one_cycle(20, max_lr=slice(1e-5,1e-6),
***start_epoch=<next_epoch#>***,
callbacks=[SaveModelCallback(learn,
every='epoch', monitor='accuracy',
***name=<callback_save_file>***)])
fast.ai 会告诉你“载入<回调 _ 保存 _ 文件> _ <上一个 _ 纪元# > ”,恢复训练。
您可以在此查看 fit_one_cycle 方法支持的所有参数:
想看看结果吗?
(A)显示了由微 CT 切片中的网络识别和分割的微化石。(B)显示了化石的细节,( C)显示了人工提取后化石的显微断层图像。(D)显示同一样本的显微镜照片。
我们学到了什么?
卷积神经网络和深度学习可以成功地应用于解决海洋微体古生物中的问题,这是一个你不会指望人工智能会找到应用的领域。可以训练语义分割网络,以在沉积岩的微断层图像中可靠地找到微化石,这些图像是从石油勘探钻机获得的钻孔岩心中获得的。一个现成的以 ResNet34 为网络的 UNet 框架就足以解决这个问题。
想了解更多?
我们还测试了其他网络,并发布了一些新的出版物:
- 访问我们的项目页面:【http://www.lapix.ufsc.br/pesquisas/microfosseis/
- 访问我们的数据集页面:http://www.lapix.ufsc.br/microfossil-segmentation/
- 看看我们的新论文使用海洋微体古生物的深度学习方法进行自动微体化石识别和分割
- 查看我们关于 bioRxiv 的稍旧的论文,了解我们使用不同型号获得的结果
采用一种新的 HYPO 策略:一种 逐步渐进提高图像分辨率的训练策略 ,可以解决微断层体积中的大量数据所带来的存储问题。这使得我们最初可以大批量工作,训练得更快更好。
引用这篇文章
@misc{von wangenheim_ramos de carvalho_2019,
title={Artificial Intelligence & Paleontology: Use Deep Learning to search for Microfossils},
url={https://towardsdatascience.com/artificial-intelligence-paleontology-use-deep-learning-to-search-for-microfossils-18760bb30880},
publisher={Towards Data Science},
author={von Wangenheim, Aldo Eduardo and Ramos de Carvalho, Luis Eduardo},
year={2019},
month={Jun}
}
电影工业的人工智能视角
Canvas | Edgar Valdes | May 2019
“慢慢地,我学会了人类的方式:如何毁灭,如何仇恨,如何贬低,如何羞辱。在我主人的脚下,我学到了人类最高的技能,这是其他生物所没有的技能:我终于学会了如何撒谎。”―《尼克·迪尔,弗兰肯斯坦》,根据玛丽·雪莱的小说改编
文学、电影和人工智能
玛丽·雪莱关于现代普罗米修斯的历史穿越了时间和空间,影响了每一代人。在个人层面,弗兰肯斯坦的经典故事和它的时代性吸引了人们对未知事物的恐惧,科学和技术就是例证。一个扮演好角色的科学家,一个创造出能够超越人类极限的超级智慧生物的人。现在这种恐惧变得比 200 年前更加重要。雪莱对人工智能的思考类似于我们今天对人工智能(AI)的阐述。也许在未来,人工智能可以拥有超越人类能力的自我意识甚至直觉。在机器学习正式发展的一个多世纪之前,雪莱出版的书(1823 年)中反复出现了同样的问题。弗兰肯斯坦的创造物学会了人类语言,他是机器智能的生动化身:他,或者说它,学习算法。
电影工业的信息流
对于大多数人工智能算法来说,信息处理和由此产生的知识是任何行业最渴望完成的任务。这就是所谓的“隐藏”的揭示,这反过来增加了(自动或人工)预测的能力。从前面可以清楚地看到,信息具有核心作用,因此产生大数据的行业适合从人工智能中受益更多。电影业的收入约为 1360 亿美元。一部电影的观众数量可以达到惊人的1.78 亿(这个数字比的 8000 万网飞和 Bitorrent 用户翻了一番)。此外,该行业每年还会产生超过 2000 部高水平的作品。所有这些(可能)是信息流的最大来源之一。还没有关于如何对电影业产生的数据和信息进行精确测量的正式研究。也许这是无法计算的,但让我们来打个比方:如果 YouTube 每天有 40 亿次访问,每次访问平均 40 分钟,以每分钟 250 MB 的速度,我们得到的数字是4pb 的数据。
看看这些数字,电影作为知识的生产者,是巨大的。我们可能会问自己:**我们如何理解所有电影生成的信息,它如何影响现实?**要回答这个问题,必须考虑现象的两个根本方面:一是通过数据产生信息;第二,这些信息如何转化为知识。
电影体验及其与情报学的关系
想想通过电影制作创造知识的经历。对于每一个场景,一次发生的所有动作的摘录被捕获。有人可能认为抽象是自发产生的,但事实并非如此。场景的重建是一种主观的、语境化的表达。在这种情况下,通过人和他的环境的信息生产是审美现象的一部分。信息和紧急情况是以非常密切的方式直观地联系在一起的特征。让我们将这种突现的现象称为知识。
在继续之前,让我们在理论上休息一下,说明信息来自对数据的解释。但是我们如何衡量我们是否以最好的方式诠释了一个信息呢?在数学上,一个代码(例如二进制代码)和一个条件概率被分配给构成给定消息的每个元素。这是信息论的开端。直觉上,可以理解的是,随着可预测性的增加,消息带来的惊喜(称为熵)必然会减少。这种信息流动本身就是一种现象,与全球气候或股票市场动态等突发现象密切相关。
电影工业中的人工智能透视
在生成艺术(如电影制作)中,要考虑的关键因素是,把它看作一个突现的发生器,并赞美这样一个问题:电影工业是如何塑造社会结构的?因此,为了理解电影工业中的信息,我们可能需要定位电影生产链中使用数字使能器(软件平台或数据模型)的所有信息点。与此同时,我们可以使用“最小加速框架”来推断人工智能可以在电影业的经济生态系统中以积极的方式影响哪里。
在电影设计后期制作的各个设计阶段,深度学习和图像识别可以用于学习和应用决策,例如识别可能不存在的场景的错误元素。这样的原因可能来自生产的错误(一个中世纪庆典上的星巴克杯子),或者甚至可以进一步推断使用人工智能众包的“对共同事物的理解”。
在早期,在制作、选角或采购阶段,服装和服饰部门还可以使用监督学习的组合,在演员选角之前或同时为整部电影创建和确定正确的设计服装。
走向消费、展示、销售阶段,AI 在其他行业已经展现出超强的市场份额预测能力。综合因果模型在产生足够数据的行业中有更好的预测性能。更重要的是,展示地点的孪生模型的图形表示也可以成为电影和物联网之间的桥梁。
此外,由于电影是最具社会性的信息生成者,由此产生的大数据可以用来提高人工智能的能力,以改善其他行业的“情绪分析”。基于偏好模型的监督学习可以提高这种情感分析的性能,使 fil 行业将其消费范围转变为人工智能技术的生产实体。
趋势和结论
现在让我们来谈谈电影业的趋势。一方面,我们在生产链中有标准化的流程。如果我们分析近年来该学院的科学和技术奖项,我们会看到一个明显的和日益增长的使用数字工具的趋势。在这个奖项的 40 年中,数字图像技术获得了 86 项认可,仅次于声音(166 项)、电影实验室(109 项)和特殊摄影(93 项);远远超过了物理设备的奖项,如相机的支撑系统和起重机,甚至一些对行业来说似乎更自然的奖项,如镜头、滤镜和照明技术。强调这一点,尽管特定的人工智能技术没有获得奖励,但提名的技术非常清楚地指向这一点。像皮克斯的 Presto 动画系统、副作用软件公司的胡迪尼和 ILM 面部表情捕捉解决系统这样的平台,都有意将人工智能元素纳入其核心。
另一方面,增强现实和沉浸式现实技术正在开发中,这对于电影业和创作者来说可能非常有趣,但我们现在将把所有这些都忽略掉。你会在其他一些帖子里看到。创新趋势的重要性来自于电影制作的创作过程。人工智能正在成为一种理想的工具,可以扩展人类的能力,达到创造的新境界,甚至产生新的前沿故事。像许多其他行业(实际上是所有行业)一样,电影业正意识到使用数字工具可能非常有利。
总之,我们可以问自己无数个因人工智能和电影工业的相互联系而产生的问题,但其中最重要的一个(在作者看来)是:**人工智能将如何影响创作过程?**我们可以直觉地认为,人机之间的信息互联或交换在新兴现象的创造中开辟了一个新的范例,并且可以成为创造性协作的催化剂。此外,我们还可以在知识现象的扩展中诱导人机甚至机器之间的合作。作者想知道,他是否会需要为电脑创作摇篮曲。
承认
作者要感谢 SAE Mexico
参考
[1] G. Ródenas Cantero,“电影与电影:电影中的音符”,载于《艺术与电影》,M. J .阿卡特兹和 A. Bertinetto 编辑。墨西哥:墨西哥国立自治大学,2016 年,第 401–454 页。
[2]亨利·柏格森。《进化与进化》(1907 年)。巴黎:法国大学出版社,2007 年。
[3]梅勒妮·米切尔。复杂性:导游。牛津大学出版社,2009 年。
[4]加卡宁、哈里斯;瓦格纳,马克。下一代网络中客户体验管理的人工智能范例:挑战与展望。IEEE 网络,2019。
[5]奥索巴,奥索德;社会模拟的人工智能/机器学习观点:新数据和新挑战。复杂系统的社会行为建模,2019 年,第 443–476 页。
[6]孙,。智能大数据分析:管理视角。智能大数据分析的管理视角。IGI 全球,2019。第 1 至 19 页。
人工智能:彻底改变移动应用行业
在当今竞争激烈的市场,人工智能已经成为商业行业探索和成长的话题。 移动应用领域的潮流引领者不断尝试在他们的移动应用中引入一些新功能。人工智能正在帮助移动应用程序开发者通过一个对用户来说没有麻烦的过程来进行激烈的竞争。 自从这项技术问世以来,这个行业对于零售商和消费者来说都发生了变化。
从一开始,移动应用就深深影响着用户的生活。通过增强用户的指尖,使用它们彻底改变了用户生活的方方面面。同样,支持人工智能的应用对用户与智能设备的交互产生了重大影响。就移动应用行业而言,人工智能的多功能特性开启了一个充满可能性和创新的新世界。人工智能有助于为不同行业构建独特的应用程序,建立与智能应用程序的精致用户交互。
据 Statista 报道,到 2025 年,人工智能的全球市场价值将超过 890 亿美元。在提高用户参与度和业务增长方面,人工智能总是有用的。人工智能解决方案有助于根据用户行为模式提高和理解用户参与度。
AI 将应用革命推向新高度
人工智能对应用行业产生了广泛的多维影响,这导致移动应用开发者在其应用中集成更多的人工智能。从一开始,人工智能就创造了 buzzword 来执行人类预期的认知功能。
人工智能已被证明对无数应用程序非常有用。从任何意义上来说,它都不仅仅是一项智能技术。人工智能用于解决复杂、关键的问题,以便更好地为用户服务。人工智能的这种功能正在帮助行业缩小用户和企业之间的差距。
同样, AI 对 得出关于用户的正确见解以获得期望的输出有极大的帮助。如今,企业正在将人工智能与他们的解决方案集成在一起,以提供一流的以数据为中心的服务。
驱动大量用户信息
修复行为模式问题
分析用户数据模式
深入洞察用户
提供更好的个性化
人工智能赋能的解决方案如何改变营销人员的体验
人工智能有能力改变指挥上繁琐而费时的做法。 人的潜能可以被分析和检查,以便做出更好的决策。因此,这增加了企业潜在的盈利能力。
人工智能解决方案总是试图帮助营销人员为他们的用户提供直观的体验。人工智能应用程序更快、反应更快,让用户和员工保持联系。营销人员拥抱人工智能技术,它已经成为所有移动应用不可分割的一部分。
用例
星巴克综合基于云的数字飞轮方案 由人工智能(AI)支持。这有助于为其用户建议基于用户历史活动的定制例程。
亚马逊围绕人工智能重新定义了其工作流程。 深度学习的 Al 根据他们的购买行为和喜好,理解推荐问题和结果,提供惊人的服务。
这种人工智能授权的解决方案为移动应用程序开发公司提供了许多理由,通过将人工智能技术融入应用程序来开发量身定制的用户体验。
各垂直行业选择人工智能的原因
人工智能解决方案有助于调查市场和用户的历史。整合此类解决方案有助于收集所有数据,并消除任何复杂过程中的最大误差。 在未来几年,预计超过 30%的公司将使用人工智能技术来提高收益率。此外,人工智能解决方案将帮助企业采取更好的营销策略来提高销售率。
原因 1#改善搜索体验:
AI 在搜索用户相关对象的同时改善了用户体验。这项技术增加了一种在搜索时提示用户的新方法。人工智能移动应用程序中 ML 和图像识别的集成将用户体验提升到了一个新的水平。语音识别技术融入系统后,形成了新的趋势。
原因 2#预测营销:
营销人员需要收集、维护和分析大量数据。维护客户信息需要大量的时间。因此,人工智能在这里是为了处理客户数据,从而提高销售额。人工智能应用程序支持研究和分析市场。
外卖
人工智能也被认为是移动应用行业的重要贡献者。这是人工智能在应用程序开发中的许多好处,还有更多的好处。智能手机用户正在享受特殊的人工智能应用程序的特权。
如今,具有机器学习功能的人工智能预计将为其用户提供令人惊叹的设备体验。移动应用开发公司正在利用人工智能的全部优势来留住他们的客户。随着时间的推移,人工智能设施将变得更便宜,任何规模的企业都将找到连接世界的方式。
人工智能 vs 人类:为什么奴隶会很快成为主人
(上面的涂鸦是对人工智能统治地球时代人类命运的未来主义描绘。它描绘了一个巨大的机器人,他已经承担了君主制,现在携带地球作为它的球体,并用它的权杖摆姿势。它咧嘴笑着,因为创造它的人类现在处于它的支配之下。与之相邻的是一个无助的、穿着西装的人类(象征着一个无良商人,他曾经盲目地赋予人工智能机器人权力,并在追求财富的过程中不知所措)。他现在伸出舌头,流下眼泪,后悔自己的轻率行为。
涂鸦提供:Ujjaini Basu)
“人工智能”(AI)一词是由约翰·麦卡锡创造的,用来定义计算机系统的理论和发展,这些系统能够执行通常需要人类智能的任务,如视觉感知、语音识别、决策和语言之间的翻译。人工智能的早期发展在很大程度上可以归功于这样一种理论,即所有的智能行为都是反馈机制的结果,而反馈机制可能会被机器模拟。
这就引出了一个问题,“机器会思考吗?”他的肯定回答导致了人工智能基本原理的形成。
在这一启示之后,人类看到了自我学习系统的诞生,这些系统可以有效地解决需要收集大量信息的问题,这些信息太过繁琐,人类无法处理。这一发展吸引了商人和行业专家,使人工智能成为他们工作领域不可或缺的一部分,因为他们利用它来减少体力劳动密集型工作,从而降低成本并获得巨额利润。但是当人类开始屈服于暴食和贪婪时,天堂里出现了麻烦。他们不知道界限在哪里。
赋予人工智能机器人像人类一样思考和行为的能力可能会被证明是对社会有害的,因为人类的思维往往受到情绪的影响,由经验引发,很少是无私的。人们可能会反驳这种反对意见,敦促人们把机器人仅仅看作另一个人,但问题在于它的力量和特殊能力,这可能是它对人类的优势。考虑以下摘自《独立报》2017 年出版物的摘录,以便更好地理解这个问题:
脸书放弃了一项实验,因为两个人工智能程序似乎在用一种只有它们自己懂的奇怪语言交谈。这两个聊天机器人开始创造自己的英语变化,使他们更容易工作——但这对理应照顾他们的人类来说仍然是神秘的。这些机器人被指示如何在它们之间进行谈判,并在谈判过程中提高他们的交易能力。但研究人员称,他们没有被告知使用易懂的英语,这让他们可以创造自己的“速记”。事实上,用这种奇怪的语言进行的一些谈判甚至最终成功地结束了谈判,同时完全用这种奇怪的语言进行谈判。
在网飞和 chill 的迷人时代,我敦促每个人暂停片刻,回到 20 世纪 80 年代,见证一部美国科幻情景喜剧《小奇迹》(Small Wonder),以其主角语音输入儿童身份(V.I.C.I)命名。该节目讲述了一个机器人工程师家庭的故事,他秘密地创造了一个模仿 10 岁人类女孩的机器人,然后试图冒充他的养女。这个机器人是为了帮助残疾儿童而发明的,它的发明者把它带回家,这样它就可以在家庭环境中成长。经过仔细观察,这部看似滑稽的情景喜剧展现了人类行为的一些重要特征。最引人注目的是,它凸显了人类通过过度依赖机器来找到简单方法完成工作的倾向,即使这意味着瘫痪自己的能力,就像发明家的十几岁的儿子如何偷偷摸摸地使用机器人完成作业一样。该节目还强调,人类容易幻灭,因为他们很容易在情感上与机器人联系在一起,就像发明家家庭的所有成员尽管知道真相,但仍将机器人视为真正的人一样。该节目几十年前揭示的内容直到今天仍然适用。
对娱乐机器人需求的上升不仅表明了人类对人类的快速退缩,也突显了人类对人工智能驱动的机器的屈服。阅读《太阳报》2018 年出版的一篇可怕的摘录,了解情况的严重性:
心理学专家警告说,更多地接触人工智能性爱机器人可能会加剧性瘾。虽然它们的创造者声称它们可以证明是婚姻挣扎、孤独或残疾男性的福音,但专家们并不相信它们对整个社会的好处。比尔查德博士是马里波恩心理治疗中心的临床主任,他说,对于有饮酒问题的人来说,它们和酒精的作用是一样的。
这恰恰显示了无良的人类是如何利用人类同胞的弱点,双方都在下意识地挖掘自己的坟墓!
世界卫生组织报告称,目前有超过 3 亿人患有抑郁症,但其中近一半人没有得到所需的帮助。在这样一个艰难的时代,当人类这个“高等哺乳动物”被期望互相帮助,互相治愈,互相提升的时候,机器人被专门用来提供陪伴。陪伴机器人的目标市场包括单身儿童和老年人。又一个证明人类屈服于人工智能的事实!
虽然创造 bandi coot——一个旨在彻底消除地球表面人工清扫的下水道和下水道清洁机器人系统——的努力值得赞赏和鼓励,但创造 Sophia——一个模仿令人向往的奥黛丽·赫本(Audrey Hepburn)的人形机器人,最终成为第一个获得国家公民身份的同类机器人——的努力不值得大肆宣传。在创造了索菲亚的汉森机器人公司的官方网站上,这个人形机器人敦促观众:
“把我想象成我们对人工智能未来梦想的化身,以及高级人工智能和机器人研究的框架,以及探索服务和娱乐应用中人类机器人体验的代理人。”
它还补充说:
“随着我的科学发展如此之快,甚至我许多最疯狂的虚构梦想也可能很快成为现实。”
这听起来真让人毛骨悚然!
人工智能正在逐渐消除人类的触觉。不仅仅是劳动密集型工作,像新闻业这样的创造性工作也因为其延伸性而受到威胁。人类将机器人编程为像人类一样的行为,然后让它们幻灭,这种恶性循环最终会使人类机械化。随着机器人自主程度的提高,机器人生育机器人可能不是一个遥远的现象。随着他们数量的增加,他们的影响也将增加,这为奴隶很快超过其主人铺平了道路。
人工智能与机器学习——底线
人工智能是一个总称,指的是任何能做一些智能事情的计算机程序。你能区分这两个术语吗?
Credit: pixabay
机器学习(ML)和人工智能(AI)目前正在大肆宣传。尽管这两个术语被随意地、可互换地使用,但它们并不相同。
你可以把它们想象成一套嵌套的俄罗斯娃娃:AI 是最大的“套娃”,ML 是最小的——也就是说 ML 是 AI
(ML ⊆ AI)的子集。
Russian dolls
在谷歌上快速搜索人工智能和人工智能的区别会产生数百万个结果,但是,嘿…它们冗长而复杂…有时该领域的科学家仍然在争论这两者的最佳定义,并且可能会继续争论下去!
在这里,我试图用简单的术语来说明它们之间的区别,同时保持文本简洁明了!👏
所以:让我们在不到 2 分钟的时间内,探索一下它们的不同之处…
人工智能
人工智能致力于模仿人类的决策过程,并以类似人类的方式执行智力任务。任务包括:
- 问题解决
- 理解语言
- 识别声音
- 识别图像
- 学问
人工智能的起源来自图灵测试——一组类似宣言的特征,定义了一个系统如何表现出与人类同等(或无法区分)的智能行为。
它可以指任何东西,从下棋的计算机程序,到像苹果的语音识别系统,从 T21 的无人驾驶汽车,到在日本银行提供礼宾服务的机器人。
机器学习
ML 是 AI 的一个子领域。这里的关键概念是,机器摄取大型数据集,为自己“学习”,当接触到新数据时,它们可以做出决策。简单地说:与用特定指令手工编写计算机程序来完成任务不同,ML 允许程序学会自己识别模式并做出预测。
一些现实生活中的例子是:
- 谷歌 Gmail 的智能回复:代表你回复邮件,给出不同的回复建议。
- 谷歌地图:通过在位置数据的帮助下分析交通速度,建议最快的路线以减少旅行时间。
- Paypal :对客户数据使用 ML 算法来对抗欺诈。
- 网飞:推出了一款支持智能娱乐的电视剧建议引擎。
而且只是为了好玩;看过《硅谷》这一集吗?
🌭
简单地
我希望这篇文章已经帮助一些人理解了人工智能和人工智能之间的区别,并指出那些将术语混为一谈的资源。
人工智能是一个比人工智能更宽泛的概念,人工智能指的是使用计算机模仿人类的认知功能。
当机器以“智能”的方式执行基于算法的任务时,那就是 AI。
和…相对
ML 是人工智能的一个子集,专注于机器接收一组数据的能力,并随着它们了解更多关于它们正在处理的信息而进化。
这里有一个小奖励:
AI vs ML
感谢阅读!
我定期在 媒体 上写关于技术&的数据——如果你想阅读我未来的帖子,只需“关注”我!
人工智能会给每次交互带来更多的人情味。
Image credit: Blake Wisz
人工智能将为每一次互动带来更多的人情味
人工智能和机器学习已经成为客户关系中不可避免的趋势。人工智能正在解锁和重新定义各种可能性,以吸引当今最苛刻的消费者;满足他们不断增长的期望,发展情感联系,提供令人满意的客户体验。Juniper Research 发表的一份报告预测,到 2022 年,零售业在人工智能上的支出将达到每年 73 亿美元。优步和 Lyft 等著名应用改变了消费者对出租车的预期。传统出租车的体验,现在看来已经过时,失效。然而,人工智能的到来对人类联系的丧失敲响了警钟。
T2 最近发布的一份报告称,沃尔玛雇佣的科技人才比谷歌和脸书还多。技能需求的这一显著转变表明了零售业正在发生怎样的变化。它需要彻底改造,从吸引突破性的技术人才开始,以便继续竞争。
面向服务的智能
人工智能(AI)因为它的能力而到处出现。品牌正在利用它来改善客户服务,并比以往任何时候都更快地从客户那里获得答案。在美国,Capital One 银行让客户通过亚马逊 Alexa 管理他们的账户和交易。
2019 年,电子商务网站了解消费者的需求比以往任何时候都更重要。
通过开发技术,电子商务可以更好地了解他们的客户是谁,他们的期望是什么,以及如何实现他们的目标。收集到的数据将有助于预测消费者需求,推荐产品,并为每位消费者提供独特的购物体验,同时提供个性化的客户服务,并在整个客户旅程中增加市场销售额。讽刺的是,AI 的使用将使客户体验更加人性化,赋予机器人自己的效用。
借助人工智能,在线商店可以更好地了解他们的客户,并增加他们在所有渠道的营销活动的结果。这种由人工智能优化的方法不仅节省了时间,还发现了新的机会来提高他们网站的性能和增加客户忠诚度。
店内体验不容忽视
沃尔玛刚刚在纽约开设了他的人工智能承诺店。这个被称为 IRL(智能零售实验室)的单位是一个 50,000 平方英尺的商店,它使用人工智能来确保农产品和肉类等易腐物品的库存位置和新鲜度。
根据彭博的一份报告,亚马逊的无收银 Go 商店可能是一项价值 40 亿美元的业务,并计划到 2021 年开设多达 3000 家亚马逊 Go 商店。你再也不用排队了,当你带着你的商品离开商店时,你的亚马逊账户会被扣款,你会收到一张收据。亚马逊正在使用人工智能和从多个传感器提取的数据的结合,以确保客户只为他们拿起的东西付费。你走进一家商店,里面只有你的同行评价最高的产品。信任的程度将远远高于充斥着未经其他消费者认可的产品的普通商店。
人工智能还可以检测问题并确定解决方案。
在线网站可以通过利用数据来简化和减少操作任务。这要归功于允许它们对某些行为自动做出反应的技术。借助人工智能,商家网站可以更快地检测异常并解决问题。始终将客户服务放在首位。
如今,品牌面临的挑战是考虑技术的能力并为此做好准备,同时意识到人工智能、数据收集和隐私可能带来的问题。
关于作者
Carts Guru 的创始人兼首席技术官 Maxime Pruvost 在他 19 岁时创建了他的第一家创业公司,当时他正在法国学习计算机科学。到他毕业时,他已经成功地联合创立了两家公司。马克西姆三年前从法国搬到旧金山,在硅谷的中心发展他的新公司 Carts Guru。Maxime 热衷于制造产品,提出新想法并将其转化为现实,成功地为电子商务市场安排了高可用性 SaaS 产品的运输。
使用 NumPy 的人工神经网络实现和水果 360 图像数据集的分类
本教程使用 NumPy 从头开始在 Python 中构建人工神经网络,以便对 Fruits360 数据集进行图像分类应用。本教程中使用的所有内容(即图像和源代码),而不是 color Fruits360 图像,都是我的书的专有权利,该书被称为“Ahmed Fawzy Gad‘使用深度学习的实用计算机视觉应用与 CNN’。2018 年 12 月,新闻,978–1–4842–4167–7。这本书在斯普林格书店有售,链接:【https://springer.com/us/book/9781484241660。
本教程中使用的源代码可以在我的 GitHub 页面上找到:https://github.com/ahmedfgad/NumPyANN
书中使用的示例是关于使用人工神经网络(ANN)对 Fruits360 图像数据集进行分类。该示例没有假设读者既没有提取特征也没有实现 ANN,因为它讨论了什么是适合使用的特征集以及如何从头开始在 NumPy 中实现 ANN。Fruits360 数据集包含 60 类水果,如苹果、番石榴、鳄梨、香蕉、樱桃、枣、猕猴桃、桃子等。为了使事情更简单,它只对 4 个选定的类有效,它们是苹果,柠檬,芒果和覆盆子。每个类有大约 491 幅图像用于训练,另外 162 幅用于测试。图像大小为 100x100 像素。
特征提取
这本书从选择合适的特征集开始,以达到最高的分类精度。根据下面显示的 4 个选定类别的样本图像,它们的颜色似乎有所不同。这就是为什么颜色特征适合在这个任务中使用。
RGB 颜色空间不会将颜色信息与其他类型的信息(如照明)隔离开来。因此,如果 RGB 用于表示图像,则 3 个通道将参与计算。因此,最好使用将颜色信息隔离到单一通道的颜色空间,如 HSV。这种情况下的颜色通道是色调通道(H)。下图显示了之前提供的 4 个样本的色调通道。我们可以注意到每个图像的色调值与其他图像的不同。
色调通道尺寸仍然是 100x100。如果将整个通道应用于 ANN,那么输入层将有 10,000 个神经元。网络还是很庞大的。为了减少使用的数据量,我们可以使用直方图来表示色调通道。直方图将具有 360 个面元,反映色调值的可能值的数量。以下是 4 幅样本图像的直方图。使用色调通道的 360 格直方图,似乎每个水果都投票给直方图的一些特定格。与使用 RGB 颜色空间中的任何通道相比,不同类别之间的重叠更少。例如,苹果直方图的区间范围是 0 到 10,而芒果直方图的区间范围是 90 到 110。每个类别之间的余量使得更容易减少分类中的模糊性,从而提高预测精度。
下面是从 4 幅图像中计算色调通道直方图的代码。
**import** numpy
**import** skimage.io, skimage.color
**import** matplotlib.pyplot
raspberry = skimage.io.imread(fname=**"raspberry.jpg"**, as_grey=**False**)
apple = skimage.io.imread(fname=**"apple.jpg"**, as_grey=**False**)
mango = skimage.io.imread(fname=**"mango.jpg"**, as_grey=**False**)
lemon = skimage.io.imread(fname=**"lemon.jpg"**, as_grey=**False**)
apple_hsv = skimage.color.rgb2hsv(rgb=apple)
mango_hsv = skimage.color.rgb2hsv(rgb=mango)
raspberry_hsv = skimage.color.rgb2hsv(rgb=raspberry)
lemon_hsv = skimage.color.rgb2hsv(rgb=lemon)
fruits = [**"apple"**, **"raspberry"**, **"mango"**, **"lemon"**]
hsv_fruits_data = [apple_hsv, raspberry_hsv, mango_hsv, lemon_hsv]
idx = 0
**for** hsv_fruit_data **in** hsv_fruits_data:
fruit = fruits[idx]
hist = numpy.histogram(a=hsv_fruit_data[:, :, 0], bins=360)
matplotlib.pyplot.bar(left=numpy.arange(360), height=hist[0])
matplotlib.pyplot.savefig(fruit+**"-hue-histogram.jpg"**, bbox_inches=**"tight"**)
matplotlib.pyplot.close(**"all"**)
idx = idx + 1
通过循环使用 4 个图像类中的所有图像,我们可以从所有图像中提取特征。接下来的代码会这样做。根据 4 个类中的图像数量(1962)和从每个图像中提取的特征向量长度(360),创建一个 NumPy 个零数组,并保存在 dataset_features 变量中。为了存储每个图像的类标签,创建了另一个名为输出的 NumPy 数组。苹果的分类标签是 0,柠檬是 1,芒果是 2,覆盆子是 3。代码期望它运行在一个根目录下,这个根目录下有 4 个文件夹,它们是根据名为水果的列表中列出的水果名称命名的。它遍历所有文件夹中的所有图像,从每个图像中提取色调直方图,为每个图像分配一个类别标签,最后使用 pickle 库保存提取的特征和类别标签。您还可以使用 NumPy 来保存生成的 NumPy 数组,而不是 pickle。
**import** numpy
**import** skimage.io, skimage.color, skimage.feature
**import** os
**import** pickle
fruits = [**"apple"**, **"raspberry"**, **"mango"**, **"lemon"**] *#492+490+490+490=1,962* dataset_features = numpy.zeros(shape=(1962, 360))
outputs = numpy.zeros(shape=(1962))
idx = 0
class_label = 0
**for** fruit_dir **in** fruits:
curr_dir = os.path.join(os.path.sep, fruit_dir)
all_imgs = os.listdir(os.getcwd()+curr_dir)
**for** img_file **in** all_imgs:
fruit_data = skimage.io.imread(fname=os.getcwd()+curr_dir+img_file, as_grey=**False**)
fruit_data_hsv = skimage.color.rgb2hsv(rgb=fruit_data)
hist = numpy.histogram(a=fruit_data_hsv[:, :, 0], bins=360)
dataset_features[idx, :] = hist[0]
outputs[idx] = class_label
idx = idx + 1
class_label = class_label + 1
**with** open(**"dataset_features.pkl"**, **"wb"**) **as** f:
pickle.dump(**"dataset_features.pkl"**, f)
**with** open(**"outputs.pkl"**, **"wb"**) **as** f:
pickle.dump(outputs, f)
目前,每个图像使用 360 个元素的特征向量来表示。这样的元素被过滤,以便仅保留用于区分 4 个类别的最相关的元素。减少的特征向量长度是 102 而不是 360。使用更少的元素有助于比以前做更快的训练。 dataset_features 变量形状将是 1962x102 。你可以在书中读到更多关于减少特征向量长度的内容。
至此,训练数据(特征和类标签)都准备好了。接下来是使用 NumPy 实现 ANN。
安实施
下图显示了目标人工神经网络结构。有一个输入层有 102 个输入,2 个隐藏层有 150 和 60 个神经元,一个输出层有 4 个输出(每个水果类一个)。
任一层的输入向量乘以(矩阵乘法)连接到下一层的权重矩阵,以产生输出向量。这种输出向量再次乘以连接其层和下一层的权重矩阵。该过程一直持续到到达输出层。下图是矩阵乘法的总结。
大小为 1×102 的输入向量要乘以大小为 102×150 的第一个隐藏层的权重矩阵。记住这是矩阵乘法。因此,输出数组形状为 1x150。这样的输出然后被用作第二隐藏层的输入,在那里它被乘以大小为 150x60 的权重矩阵。结果大小为 1x60。最后,这样的输出乘以第二隐藏层和大小为 60×4 的输出层之间的权重。结果最后大小是 1x4。这种结果向量中的每个元素都引用一个输出类。根据具有最高分数的类来标记输入样本。
下面列出了实现这种乘法的 Python 代码。
**import** numpy
**import** pickle
**def** sigmoid(inpt):
**return** 1.0 / (1 + numpy.exp(-1 * inpt))
f = open(**"dataset_features.pkl"**, **"rb"**)
data_inputs2 = pickle.load(f)
f.close()
features_STDs = numpy.std(a=data_inputs2, axis=0)
data_inputs = data_inputs2[:, features_STDs > 50]
f = open(**"outputs.pkl"**, **"rb"**)
data_outputs = pickle.load(f)
f.close()
HL1_neurons = 150
input_HL1_weights = numpy.random.uniform(low=-0.1, high=0.1, size=(data_inputs.shape[1], HL1_neurons))HL2_neurons = 60
HL1_HL2_weights = numpy.random.uniform(low=-0.1, high=0.1, size=(HL1_neurons, HL2_neurons))output_neurons = 4
HL2_output_weights = numpy.random.uniform(low=-0.1, high=0.1, size=(HL2_neurons, output_neurons))H1_outputs = numpy.matmul(a=data_inputs[0, :], b=input_HL1_weights)
H1_outputs = sigmoid(H1_outputs)
H2_outputs = numpy.matmul(a=H1_outputs, b=HL1_HL2_weights)
H2_outputs = sigmoid(H2_outputs)
out_otuputs = numpy.matmul(a=H2_outputs, b=HL2_output_weights)
predicted_label = numpy.where(out_otuputs == numpy.max(out_otuputs))[0][0]
print(**"Predicted class : "**, predicted_label)
读取之前保存的要素及其输出标注并过滤要素后,定义图层的权重矩阵。它们被随机赋予从-0.1 到 0.1 的值。例如,变量“ input_HL1_weights ”保存输入层和第一个隐藏层之间的权重矩阵。这种矩阵的大小根据特征元素的数量和隐藏层中神经元的数量来定义。
创建权重矩阵后,下一步是应用矩阵乘法。例如,变量“H1 _ 输出”保存将给定样本的特征向量乘以输入层和第一个隐藏层之间的权重矩阵的输出。
通常,激活函数被应用于每个隐藏层的输出,以创建输入和输出之间的非线性关系。例如,矩阵乘法的输出被应用于 sigmoid 激活函数。
生成输出层输出后,进行预测。预测的类标签被保存到变量“预测 _ 标签”中。对每个输入样本重复这些步骤。下面给出了适用于所有示例的完整代码。
**import** numpy
**import** pickle
**def** sigmoid(inpt):
**return** 1.0 / (1 + numpy.exp(-1 * inpt))
**def** relu(inpt):
result = inpt
result[inpt < 0] = 0
**return** result
**def** update_weights(weights, learning_rate):
new_weights = weights - learning_rate * weights
**return** new_weights
**def** train_network(num_iterations, weights, data_inputs, data_outputs, learning_rate, activation=**"relu"**):
**for** iteration **in** range(num_iterations):
print(**"Itreation "**, iteration)
**for** sample_idx **in** range(data_inputs.shape[0]):
r1 = data_inputs[sample_idx, :]
**for** idx **in** range(len(weights) - 1):
curr_weights = weights[idx]
r1 = numpy.matmul(a=r1, b=curr_weights)
**if** activation == **"relu"**:
r1 = relu(r1)
**elif** activation == **"sigmoid"**:
r1 = sigmoid(r1) curr_weights = weights[-1]
r1 = numpy.matmul(a=r1, b=curr_weights)
predicted_label = numpy.where(r1 == numpy.max(r1))[0][0]
desired_label = data_outputs[sample_idx]
**if** predicted_label != desired_label:
weights = update_weights(weights, learning_rate=0.001)
**return** weights
**def** predict_outputs(weights, data_inputs, activation=**"relu"**):
predictions = numpy.zeros(shape=(data_inputs.shape[0]))
**for** sample_idx **in** range(data_inputs.shape[0]):
r1 = data_inputs[sample_idx, :]
**for** curr_weights **in** weights:
r1 = numpy.matmul(a=r1, b=curr_weights)
**if** activation == **"relu"**:
r1 = relu(r1)
**elif** activation == **"sigmoid"**:
r1 = sigmoid(r1)
predicted_label = numpy.where(r1 == numpy.max(r1))[0][0]
predictions[sample_idx] = predicted_label
**return** predictions
f = open(**"dataset_features.pkl"**, **"rb"**)
data_inputs2 = pickle.load(f)
f.close()features_STDs = numpy.std(a=data_inputs2, axis=0)
data_inputs = data_inputs2[:, features_STDs > 50]
f = open(**"outputs.pkl"**, **"rb"**)
data_outputs = pickle.load(f)
f.close()HL1_neurons = 150
input_HL1_weights = numpy.random.uniform(low=-0.1, high=0.1,size=(data_inputs.shape[1], HL1_neurons))
HL2_neurons = 60
HL1_HL2_weights = numpy.random.uniform(low=-0.1, high=0.1,size=(HL1_neurons,HL2_neurons))
output_neurons = 4
HL2_output_weights = numpy.random.uniform(low=-0.1, high=0.1,size=(HL2_neurons,output_neurons))
weights = numpy.array([input_HL1_weights,
HL1_HL2_weights,
HL2_output_weights])
weights = train_network(num_iterations=10,
weights=weights,
data_inputs=data_inputs,
data_outputs=data_outputs,
learning_rate=0.01,
activation=**"relu"**)
predictions = predict_outputs(weights, data_inputs)
num_flase = numpy.where(predictions != data_outputs)[0]
print(**"num_flase "**, num_flase.size)
“权重”变量包含整个网络的所有权重。基于每个权重矩阵的大小,网络结构被动态地指定。比如“ input_HL1_weights ”变量的大小是 102x80,那么我们可以推导出第一个隐层有 80 个神经元。
“ train_network ”是核心函数,它通过循环所有样本来训练网络。对于每个示例,都应用了清单 3–6 中讨论的步骤。它接受训练迭代次数、特征、输出标签、权重、学习率和激活函数。激活功能有两个选项,ReLU 或 sigmoid。ReLU 是一个阈值函数,只要它大于零,就返回相同的输入。否则,它返回零。
如果网络对给定的样本做出了错误的预测,则使用“ update_weights 函数更新权重。不使用优化算法来更新权重。简单地根据学习率更新权重。准确率不超过 45%。为了获得更好的精度,使用优化算法来更新权重。例如,您可以在 scikit-learn 库的 ANN 实现中找到梯度下降技术。
在我的书中,你可以找到一个使用遗传算法(GA)优化技术优化人工神经网络权重的指南,这种技术可以提高分类的准确性。您可以从我准备的以下资源中了解有关 GA 的更多信息:
遗传算法优化简介
https://www . LinkedIn . com/pulse/introduction-优化-遗传-算法-ahmed-gad/
https://www . kdnugges . com/2018/03/introduction-optimization-with-genetic-algorithm . html
https://www.springer.com/us/book/9781484241660
遗传算法(GA)优化—分步示例
https://www . slide share . net/AhmedGadFCIT/genetic-algorithm-ga-optimization-step by step-example
遗传算法在 Python 中的实现
https://www . LinkedIn . com/pulse/genetic-algorithm-implementation-python-Ahmed-gad/
https://www . kdnugges . com/2018/07/genetic-algorithm-implementation-python . html
https://towardsdatascience . com/genetic-algorithm-implementation-in-python-5ab 67 bb 124 a 6
遗传算法在 Python 中的实现。通过创建一个……
github.com](https://github.com/ahmedfgad/GeneticAlgorithmPython)
联系作者
领英:https://linkedin.com/in/ahmedfgad/
KD nuggets:https://kdnuggets.com/author/ahmed-gad
YouTube:https://youtube.com/AhmedGadFCIT
走向 https://towardsdatascience.com/@ahmedfgad:
完全初学者的人工神经网络
简单明了的神经网络解释(附图片!)
机器学习推动了我们当今互动的许多技术,从谷歌上的搜索结果到肿瘤诊断道路上的 ETA 预测,机器学习的应用无所不在。尽管它对我们的日常生活非常重要,但我们大多数人都不知道这东西是如何工作的。我们可能听说过“人工神经网络”这个术语,但它真正的含义是什么?它是一个和人类一样思考的机器人吗?是苹果公司的超级计算机吗?还是只是一个花哨的数学方程式?
机器学习实际上涵盖了从简单的决策树(类似于你在商业管理入门课程中制作的决策树)到神经网络(模仿大脑功能的复杂算法)的所有内容。本文将深入研究神经网络,因为它们是目前大多数令人印象深刻的机器学习背后的东西。
首先,一个说明性的例子
为了理解什么是机器学习,考虑试图根据地面的土壤含量预测树的高度的任务。现在,因为这是我们正在谈论的机器学习,让我们假设我们可以在这项任务中获得一些非常好的数据:来自世界各地的成千上万的土壤样本。
你可以对土壤含量进行多种测量。像水分含量、铁含量、颗粒大小、酸度等。它们都对一棵树的健康和它长得有多高有一些影响。假设我们检查了世界上成千上万的树(当然都是同一种类),并收集了它们的土壤含量和树高的数据。我们刚刚为机器学习创建了一个完美的数据集,既有特征(土壤含量),也有标签(高度)。我们的目标是使用这些特征来预测标签。
这看起来绝对是一项艰巨的任务。即使土壤含量和树高之间有关系,也不可能做出准确的预测,对吗?嗯,机器学习并不总是完全类似于我们的大脑是如何工作的,即使神经网络是从大脑模仿而来的。重要的是要记住,这些模型不会像我们人类一样胡乱猜测。相反,他们提出了精确的方程来决定他们的预测。让我们先把问题简化一点。
很容易想象像水分这样的单一特征会对树高产生重大影响。太干燥,树不会生长,但太潮湿,根可能腐烂。我们可以根据这个单一的测量值建立一个方程,但是它不会很精确,因为有更多的因素影响一棵树的生长。
看到上面的假设关系不是一个伟大的估计了吗?这条线遵循点的总体趋势,但是如果你用它来预测你的身高,那么大多数时候你都是错的。考虑这样一种情况,那里有充足的水分,但土壤酸性太强。树不会长得很好,但是我们的模型只考虑了水分,所以会假设会。然而,如果我们考虑这两种测量,我们可能会得到更准确的预测。也就是说,我们只能说,当湿度和酸度都处于良好水平时,树会非常高,但如果其中一个或两个都处于不良水平,我们可以预测树会很矮。
那么如果我们考虑更多的因素呢?我们可以通过将这些关系合并到一个方程中,同时观察湿度和酸度的影响。
非常好。现在我们有了一个更复杂的方程来描述树的高度,它考虑了两个特征(测量)。现在,我们可以组合更多的特征,形成一个更复杂的方程。为了清楚起见,我将最终的组合方程称为我们的“T2”模型“T3”。它模拟了特征如何影响身高。将这样简单的方程组合成一个多维模型非常简单,我们可以非常快速地创建一个非常复杂的模型。但是,对于你可以对其中一个简单方程(为高度和湿度之间的关系选择一个略有不同的方程)做出的每一个调整,现在我们必须尝试数以千计甚至数百万计的更多“模型”,每个模型都略有不同。这些模型中的一个可能很擅长对土壤含量和高度之间的关系进行建模,但是大多数可能都不擅长。
这就是机器学习的用武之地。它将创建一个由许多更简单的方程组成的模型,然后测试它的效果如何。基于它的误差(也就是说,预测有多错误),它会稍微调整更简单的方程,并测试它的效果如何。当它调整更简单的方程时,它只是改变了上图中的一个图形,使其看起来略有不同。它可以将图表向右或上下移动,也可以略微拉长波峰或增加波谷的大小。通过一个类似于进化的过程,它将达到最好的——或者至少是一个好的——解决方案。事实上,这就是为什么它被称为“机器学习”。机器自己学习模式,无需人类告诉它甚至像“水分对树木有益”这样简单的信息。
如果你对机器学习模型如何挑选下一个方程组合感到好奇,你应该进一步阅读关于模型训练的内容。具体来说,需要掌握的概念是随机梯度下降和反向传播。
如果你曾经在大学学习过傅立叶级数,把它们看作神经网络的类比是很有用的。在学校里,我们学习到你可以用简单正弦波的组合产生复杂的波,比如方波。嗯,我们也可以用类似的方式从许多简单的方程中创建一个机器学习模型。
神经网络的组成部分是什么?
神经网络是根据生物大脑的内部工作原理专门设计的。这些模型通过将输入特征传递给被称为感知器(想想“神经元”)的几层来模仿相互连接的神经元的功能,每一层都使用一组功能来转换输入。本节将解释感知器的组成部分,感知器是神经网络的最小组成部分。
The structure of a perceptron
感知器(如上)通常由三个主要的数学运算组成:标量乘法、求和,然后使用称为激活函数的不同方程进行转换。由于感知器代表大脑中的单个神经元,我们可以将许多感知器放在一起代表一个大脑。这就是所谓的神经网络,稍后会详细介绍。
投入
输入仅仅是我们特征的度量。对于单个土壤样本,这将是每个测量值的数组。例如,我们可能有以下输入:
代表 58%的水分、1.3 毫米的颗粒大小和每千克土壤重量 11 微克铁。这些输入将被感知器修改。
砝码
权重代表标量乘法。他们的工作是评估每个输入的重要性,以及方向性。比如铁多了对身高贡献大还是小?它让树变高了还是变矮了?获得正确的权重是一项非常困难的任务,有许多不同的值可以尝试。
假设我们在-10 到 10 的范围内以 0.1 的增量尝试了所有三个权重的值。显示最佳结果的权重是 w0 = 0.2,w1 = 9.6,w3 = -0.9。请注意,这些权重的总和不一定是 100。重要的是它们之间的比较规模和方向。如果我们将这些权重乘以之前的输入,我们会得到以下结果:
这些值将被传递到感知器的下一个组件,传递函数。
转移函数
传递函数不同于其它元件,因为它需要多个输入。传递函数的工作是将多个输入组合成一个输出值,以便可以应用激活函数。这通常通过对传递函数的所有输入进行简单求和来实现。
就其本身而言,这个标量值应该代表土壤含量的一些信息。该值已经使用权重将每个度量的重要性考虑在内。现在它是一个我们可以实际使用的单一值。你几乎可以认为这是土壤成分的任意加权指数。如果我们有很多这样的指数,用它们来预测树的高度可能会变得更容易。然而,在该值作为最终输出被发送出感知器之前,使用激活函数对其进行转换。
激活功能
激活函数将把传递函数中的数字转换成一个使输入戏剧化的值。通常,激活函数将是非线性的。如果你在大学没有学过线性代数,你可能会认为非线性意味着函数看起来不像一条线,但它比这要复杂一点。现在,请记住,将非线性引入感知器有助于避免输出随输入线性变化,因此可以增加模型的复杂性。下面是两个常见的激活功能。
ReLU 是一个简单的函数,它将零和输入进行比较并选择最大值。这意味着任何负输入都是零,而正输入不受影响。在负值没有多大意义的情况下,或者在无需进行任何繁重计算的情况下移除线性时,这很有用。
sigmoid 函数很好地将值分成不同的阈值。这对于诸如 z 得分之类的值尤其有用,在这种情况下,需要仔细查看接近平均值(零)的值,因为接近平均值的微小变化可能会显著影响特定行为,但在远离平均值的情况下,数据可能会出现同样的情况。例如,如果土壤有很多很多的水分,少量增加水分可能不会影响树的高度,但如果水分水平非常平均,那么去除少量水分可能会显著影响树的高度。它强调值的差异,如果它们更接近于零。
当你想到激活函数时,只要记住它是一个非线性函数,使输入更具戏剧性。也就是说,接近零的输入通常比远离零的输入受影响更大。它基本上迫使像 4 和 4.1 这样的值更加接近,而像 0 和 0.1 这样的值变得更加分散。这样做的目的是让我们选择更明确的决策界限。例如,如果我们试图将一棵树分为“高”、“中”或“矮”,值 5 或-5 显然代表高和矮。但是像 1.5 这样的值呢?围绕这些数字,可能更难确定决策界限,因此通过戏剧化输入,可能更容易划分三个类别。
我们在训练模型之前选择一个激活函数,所以函数本身总是相同的。这不是我们在测试数千种不同型号时切换的参数之一。那只发生在重物上。ReLU 激活函数的输出将是:
偏见
到目前为止,我忽略了感知器的一个成功要素。它是 1 的附加输入。在每个感知器中,这个输入总是保持不变。就像其他输入一样,它被乘以一个权重,其目的是允许激活函数之前的值上下移动,而与输入本身无关。这使得其他权重(实际输入的权重,而不是偏差的权重)更加具体,因为它们不必试图将总和平衡为 0 左右。
更具体地说,偏差可能会将左图这样的图形移动到右图这样的图形:
就是这样!我们现在已经建立了一个单一的感知机。我们现在已经创建了一个模拟大脑神经元的模型。我们也明白,虽然这听起来很奇怪,但这实际上意味着我们可以通过改变一些权重来创建复杂的多维方程。如您所见,组件非常简单。事实上,它们可以用下面的等式来概括:
从现在开始,我将用一个绿色圆圈来表示这个等式(即一个感知器)。到目前为止,我们看到的所有组件:输入、偏置、权重、传递函数和激活函数都出现在每个单独的绿色圆圈中。当箭头指向这个绿色圆圈时,它表示一个单独的输入节点,当箭头指向绿色圆圈之外时,它表示最终的输出值。
多层感知器
为了表示一个感知器网络,我们只需将一个感知器的输出插入另一个感知器的输入。我们将许多这样的感知器连接成链,从一端流向另一端。这被称为多层感知器(MLP) ,顾名思义,有多层相互连接的感知器。为了简单起见,我们将看一个全连接的 MLPs,其中一层中的每个感知器都连接到下一层中的每个感知器。
你可能想知道“层”是什么。一层只是一排相互连接的而不是的感知器。MLP 中的感知器连接到它的前一层中的每个感知器和后一层中的每个感知器,但不连接到同一层中的任何感知器。让我们来看一个有两个输入值、两个隐藏层和一个输出值的 MLP。假设第一个隐藏层有两个感知器,第二个隐藏层有三个。
这里的感知器都将接受输入(指向圆圈的箭头),执行上一节描述的操作,然后将输出向前推(指向圆圈外的箭头)。这样做很多次,以创建越来越复杂的方程,多次考虑相同的信息,以做出准确的预测。现在,虽然这篇文章的目的是消除神经网络的“魔力”,但很难解释为什么这有助于做出更准确的预测。事实上,我描述的方法通常被称为“黑盒”方法,因为我们不知道为什么它选择的方程是重要的。它目前是一个活跃的研究领域。然而,我们能够理解的是神经网络在做什么。这就像通过每个感知器跟踪权重一样简单。
我们之所以称输入层和输出层之间的层为“隐藏的”,是因为一旦从输入端输入了值,我们就不能很好地了解该值是如何转换的,直到它退出最后一个输出节点。这是因为这些中间值从未用于评估我们的模型的性能(即,获得对样本数据所做预测的误差值)。
真的是这样。将许多这样的感知器组合在一起,有助于我们创建单个感知器可以创建的更复杂的方程。
像这样的 MLP 的输出值能够使用土壤含量测量来预测高度。当然,在每个感知器中选择正确的权重需要大量的计算能力,但这正是“神经网络”所做的。
让我们看看它的实际效果吧!
在这里,我将通过整个神经网络进行两次测量。结构将与我上面展示的网络相同。这将是非常乏味的,但如果你愿意,你可以跟着做。为了简单起见,我将忽略这种偏见。
下面是我将使用的两个特性的值。它们代表 58%的水分和 1.3 毫米的粒度。
我将为每个感知器使用以下(随机)权重和激活函数。回想一下,ReLU 激活函数将负值转换为 0,并且不转换正值:
所以让我们开始吧!前两个感知器都接受两个输入(蓝色),将它们乘以相关权重(黄色),将它们相加(紫色),然后应用 ReLU 函数(绿色):
这些输出成为第三层中每个感知器的输入。所以第二个隐层的每个感知器(有三个)都会用 338.9 和 42 作为输入。这些感知器遵循以下等式:
然而,对于下一层,请注意我们现在有三个而不是两个输入: 89.9 、 16.22 和 0 。所有三个输入都必须包含在最后一个感知器的等式中,因此它将有三个权重(下面黄色部分)。它的等式仍然和其他等式一样简单明了。
作为总结,下面是每个感知器在给定输入的情况下产生的值:
现在你知道了!这个神经网络预测出了一棵高达 165.72 英尺的树!现在,我们必须将预测结果与数据中样本树的实际高度进行比较。计算一些误差值就像计算我们的预测高度和实际高度之间的差值一样简单。然后,我们用稍微不同的权重反复重复这个过程,直到我们找到能够很好地预测许多样本的树高的权重。但是这对于人类来说太费时间了,所以我们需要一台机器来计算最佳重量。
重要提示:
- 权重完全随机以模拟神经网络的起点。这个模型显然没有经过“训练”,因此一旦我们将另一个样本放入其中,它就不会做得很好。我们将使用上面的结果来确定如何改变权重。
- 中间值根本没告诉我们多少。例如,第一个隐藏层中顶部节点的输出是 338.9,但这与神经网络预测的值 166 英尺相差甚远。重要的是不要试图将中间值解释为具有真实世界的意义。这就是为什么我们称这些层为“隐藏层”
就是这样!
感谢阅读:)考虑给文章一点掌声,真的是帮了我大忙!要了解更多关于机器学习的知识,请查看这篇关于计算机视觉背后的模型 CNN 的文章。
实践中的人工神经网络
以及人工神经网络如何重塑了许多行业
Image by Author, inspired by source. Link
T 他的文章是我写的一篇更大的文章的一部分:“人工智能简介——神经网络”如果你想了解更多关于人工神经网络的知识。去看看我的媒体简介,我在那里定期发表关于深度学习、机器学习和 iOS 开发的文章。
现在让我们来学习一下人工神经网络。我们走吧。😄
神经网络适合哪些现实世界的应用?好问题!神经网络对现实世界的商业问题有广泛的适用性。事实上,它们已经成功地应用于许多行业。
由于神经网络最擅长识别数据中的模式或趋势,因此它们非常适合预测或预报需求,包括:
- 销售预测
- 工业过程控制
- 客户研究
- 数据有效性
- 风险管理
- 目标营销
而是给你举一些更具体的例子;人工神经网络也用于以下特定的范例:识别发言者的沟通;肝炎的诊断;从故障软件中恢复电信;汉语多义词的解释;海底探雷;纹理分析;三维物体识别;手写单词识别;还有面部识别。
医学中的神经网络
人工神经网络(ANN)目前是医学中的一个“热门”研究领域,人们相信它们将在未来几年内广泛应用于生物医学系统。目前,这项研究主要是对人体的部分进行建模,并从各种扫描(如心电图、CAT 扫描、超声波扫描等)中识别疾病。).
神经网络在使用扫描识别疾病方面是理想的,因为不需要提供关于如何识别疾病的特定算法。神经网络通过例子学习,因此不需要如何识别疾病的细节。我们需要的是一组能代表这种疾病所有变异的例子。例子的数量没有‘数量’重要。如果系统要可靠有效地运行,需要非常仔细地选择示例。
心血管系统的建模和诊断
神经网络被实验性地用于模拟人类心血管系统。可以通过建立个体心血管系统的模型并将其与从患者处获得的实时生理测量值进行比较来实现诊断。如果定期执行这一程序,可以在早期发现潜在的有害医疗状况,从而使抗击疾病的过程更加容易。
个人心血管系统的模型必须模拟不同身体活动水平下的生理变量(即心率、收缩压和舒张压以及呼吸率)之间的关系。如果一个模型适用于一个人,那么它就成为这个人身体状况的模型。模拟器必须能够在没有专家监督的情况下适应任何个人的特征。这需要一个神经网络。
证明使用人工神经网络技术的另一个原因是人工神经网络提供传感器融合的能力,这种融合是来自几个不同传感器的值的组合。传感器融合使人工神经网络能够学习单个传感器值之间的复杂关系,如果单独分析这些值,这些关系就会丢失。在医学建模和诊断中,这意味着即使一组传感器中的每个传感器可能仅对特定的生理变量敏感,人工神经网络也能够通过融合来自单个生物医学传感器的数据来检测复杂的医学状况。
电子鼻
人工神经网络被实验性地用来实现电子鼻。电子鼻在远程医疗中有几个潜在的应用。远程医疗是通过通信链路进行远距离医疗实践。电子鼻可以识别远程手术环境中的气味。这些识别出的气味将被电子传输到另一个地点,在那里一个门生成系统将重现它们。因为嗅觉对外科医生来说可能是一种重要的感觉,telesmell 将增强远程呈现手术。
商业中的神经网络
商业是一个分流的领域,有几个通用的专业领域,如会计或财务分析。几乎任何神经网络应用程序都适合一个业务领域或财务分析。
将神经网络用于商业目的有一些潜力,包括资源分配和调度。使用神经网络进行数据库挖掘也有很大的潜力,即搜索数据库中显式存储的信息中隐含的模式。这一领域的大部分资助工作都被归类为专有工作。因此,不可能报告正在进行的全部工作。大多数工作是应用神经网络,如 Hopfield-Tank 网络进行优化和调度。
营销
有一个营销应用程序已经与神经网络系统集成在一起。航空公司营销策略师(商标缩写为 AMT)是由包括专家系统在内的各种智能技术构成的计算机系统。前馈神经网络与 AMT 集成,并使用反向传播进行训练,以辅助航空公司座位分配的市场控制。自适应神经方法服从于规则表达。此外,应用程序的环境不断地快速变化,这需要一个不断适应的解决方案。该系统用于监控和推荐每次出发的预订建议。此类信息对航空公司的盈利能力有直接影响,并可为系统用户提供技术优势。[哈奇森&斯蒂芬斯公司,1987 年]
虽然将神经网络应用于这个问题是很重要的,但同样重要的是要看到这种智能技术可以与专家系统和其他方法集成,以形成一个功能系统。神经网络被用来发现各种变量的不确定相互作用的影响。虽然这些相互作用没有被定义,但它们被神经系统用来得出有用的结论。同样值得注意的是,神经网络可以影响底线。
信用评估
由 Robert Hecht-Nielsen 创立的 HNC 公司已经开发了几种神经网络应用。其中之一是信用评分系统,它将现有模型的盈利能力提高了 27%。HNC 神经系统也被应用于抵押贷款筛选。Nestor 公司开发了一个神经网络自动抵押贷款保险承保系统。该系统接受了 5048 个应用程序的培训,其中 2597 个获得了认证。与财产和借款人资格有关的数据。在保守模式下,系统在 97%的情况下同意承保人。在自由模型中,系统同意 84%的情况。这是在 Apollo DN3000 上运行的系统,在大约 1 秒内处理一个案例文件时使用了 250K 内存。
结论
计算世界从神经网络中获益良多。他们通过例子学习的能力使他们非常灵活和强大。此外,不需要设计算法来执行特定的任务;即不需要理解该任务的内部机制。它们也非常适合于实时系统,因为它们的并行结构使它们具有快速的响应和计算时间。
神经网络也有助于其他领域的研究,如神经病学和心理学。它们经常被用于模拟部分生物体和研究大脑的内部机制。
也许神经网络最令人兴奋的方面是有一天可能会产生“有意识的”网络。许多科学家认为意识是一种“机械”属性,而“有意识的”神经网络是一种现实的可能性。
最后,我想说,尽管神经网络有巨大的潜力,但只有当它们与计算、人工智能、模糊逻辑和相关学科相结合时,我们才能充分利用它们。
如果你想联系我,顺便说一句,你知道一个好笑话,你可以在 Twitter 或 Linkedin 上联系我。
感谢阅读!😄 🙌