概述:用泛算法之一做一件很酷的事情。创建一个看起来像人类设计的电子游戏级别!我们将构建一个神经网络,为它现有的超级马里奥提供关卡设计,然后等待它创建一个新的关卡!
使用这种泛型算法可以创建一个关卡
本指南针对所有对机器学习感兴趣但不知道从哪里学习的读者。本文的目标是平易近人,本文有很多总结。
在干货 | 机器学习是如此有趣!最简单的入门指南,我们根据房屋的各种特点和属性创建了一个简单的算法来估计房屋的价格。我们给出了以下房屋数据:
我们得到了这个简单的估计函数:
def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): price = 0# a little pinch of this price = num_of_bedrooms * 0.123# and a big pinch of that price = sqft * 0.41# maybe a handful of this price = neighborhood * 0.57return price
换句话说,我们把决定房价的因素乘以它的权重,再把这些乘积求和,就能得到房子的估计价格。
或者不使用代码,我们直接用图片总结函数:
箭头表示函数中的权重
然而,该算法只能用于处理一些简单的问题,即输入和输出之间的线性关系(Linear Relationship)的问题。但如果真实价格与决定因素的关系不是那么简单,我们该怎么办呢? 比如位置对大小户型的房子影响很大,但对中等户型的房子影响不大。如何在我们的模型中收集这些复杂的信息?
因此,为了更加智能化,我们可以利用不同的权重多次操作算法,在不同的情况下收集价格估计。
我们试图用四种不同的算法来解决这个问题
现在,我们有四种不同的价格估计。我们将这四种价格估计总结为最终估计。我们把它们放在同一个算法中,然后重新计算(当然,这次我们使用不同的权重)。
现在我们结合四种不同的方法来解决同一个问题,得到一个超级答案。正因为如此,我们才能用它来模拟更多不同的情况。
什么是神经网络?
让我们将四种不同的预测方法概括为一个图:
这是一个神经网络!每个节点都知道如何收集一组收据,找到它们的权重,并做出相应的输出值(价格预测)。通过连接这些节点,我们可以模拟更复杂的函数!
当然,为了保持简洁,我跳过了很多内容(比如数据标准化)Feature Scaling和激活函数Activation Function)。但最重要的是以下内容:
我们做了一个 权重*简单的算法,我们称之为神经元。
通关连接神经元,我们可以模拟不能被简单神经元模拟的函数。
就像乐高积木一样! 我们不能用乐高积木建摩天大楼,但如果有足够的乐高积木,我们可以建造任何东西。
也许未来的动物是由积木组成的? 那只能去未来一探究竟。…
让我们的神经网络有记忆的能力
如果输入相同的数据,我们刚刚看到的神经网络总是有相同的输出。这是因为他没有记忆能力。在编程语言中,他是一个无状态算法(Stateless Algorithms)。
在很多情况下(比如估计房价),这是你需要的算法。但随着时间的增加,这种算法无法在数据中找到规则。
假设我现在让你在电脑上写一个故事。在你开始之前,我需要猜测你首先敲击键盘上的哪个字母。我该猜哪个?
我可以用我的语言(英语)知识来增加我正确猜测的可能性。例如,你可能会先发送第一个常见的单词字母。如果我查看你过去写的故事,我可以根据你过去的单词选择来缩小我的猜测范围。一旦我有了这些数据,我就可以用它们来构建一个神经网络,并计算出你用任何字母开始的可能性。
我们的模型是这样的:
让我们更难解决这个问题。现在我们假设整个故事中的任何一点,我们都必须猜测下一个字母是什么。这是一个更有趣的问题。
让我们以海明威的太阳照常升起前几个词为例:
“Robert Cohn was once middleweight boxi”
那一个字母是什么?
你可能会猜到n这个词可能是boxing”。我们是通过观察还有语言常识来猜测这个词的。同时,“middleweight这个词也给了我们额外的猜测线索。
从另一个角度来看,如果我们知道之前出现的字母与我们的语言知识相结合,我们对下一个字母的猜测就会变得更容易。
为了用神经网络的方法解决这个问题,我们需要状态(state)添加到我们的模型中。每次我们通过神经网络解决问题,我们都会保存中间的计算结果,并再次作为下一个输入的一部分。这样,我们的模型就可以根据以前的输入数据来调整他的猜测。
跟踪模型中的每个状态(state),它不仅能让我们更好地预测第一个字母,还能让我们更好地预测任何位置的下一个字母。
这是关于循环神经网络的(Recurrent Neural Network,简称RNN)基本概念。每次我们使用神经网络,我们都会升级它。这使得它能够根据最近浏览的信息更新预测。如果数据记忆足够大,他甚至可以模拟长期规律。
猜字母有什么意义?
猜下一个字母看起来没用。这样做有什么意义?
自动预测你想要输入的单词是一个很酷的应用程序。
下一个最有可能的字母是t”
但是如果我们最大限度地扩展我们的概念呢?如果我们让我们的模型预测下一个字母,永远不会停止,会发生什么? 机器会自己写一个完整的故事吗?
下周将连载更新机器学习制作超级马里奥关卡的更多精彩内容。快关注微信官方账号,和小编一起学习!
本文经混沌巡洋舰授权转载,作者:九五要当学霸。