我今天在想什么可能是有史以来最复杂/最令人印象深刻的应用程序.所以我开始考虑我喜欢和使用日常数据库.
然后我进入了未知领域(对我们大多数人来说,我猜),政府.我只能想象NASA应用程序的复杂性,它们允许它们与火星上的流动站进行通信.
但后来我开始思考自从小时候以来我每天都在使用的东西,游戏.不是游戏开发者,这给我带来了大量关于人工智能和计算复杂性的问题,超出了我能想到的任何问题.
游戏是最复杂/令人印象深刻的应用吗?
我一直很喜欢AI和进化算法的想法.不幸的是,众所周知,该领域的发展几乎没有早期预期的那么快.
我正在寻找的是一些具有"哇"因素的例子:
以意想不到的方式适应的自主学习系统.
特别有活力的游戏代理商并制作了意想不到的策略
符号表示系统实际上产生了一些有意义和有见地的输出
多个代理系统中有趣的紧急行为.
让我们不要进入定义AI的语义.如果它看起来或听起来像AI,让我们听听它.
我将从1997年开始讲述一个故事.
Adrian Thompson博士正在尝试使用遗传算法在FPGA中创建语音识别电路.几千代之后,他成功地让设备区分"停止"和"去"语音命令.他检查了器件的结构,发现一些有源逻辑门与电路的其余部分断开连接.当他禁用这些据称无用的大门时,电路停止工作......
我们可以尝试将讨论与技术/算法保持一致吗?如果我想了解早期阶段但显示出前景的成千上万的人工智能技术,我可以谷歌.
在我决定自学如何做之前,我一直对机器学习的主题着迷.所以我参加了斯坦福大学在线发表的课程.但是我对它所包含的数学量感到震惊.那么我应该能够理解机器学习算法的数学背景是什么?是否有任何图书馆抽象所有数学并专注于实际设计一个能够学习的软件?
我正在学校使用几种AI算法,我发现人们使用模糊逻辑来解释他们可以用几种情况解决的任何情况.当我回到书本时,我刚刚读到关于如何取而代之的状态从On到Off它是一条对角线,有些东西可以在两种状态但在不同的"级别".
我已经阅读了维基百科条目和一些教程,甚至编写了"使用模糊逻辑"(边缘检测器和单轮自控机器人)的东西,但我仍然觉得从理论到代码非常混乱.对于你来说,在不太复杂的定义中,什么是模糊逻辑?
我最近一直在阅读很多关于Markov Decision Processes(使用价值迭代)的内容,但我根本无法理解它们.我在互联网/书籍上找到了很多资源,但他们都使用的数学公式对我的能力来说过于复杂.
由于这是我上大学的第一年,我发现网上提供的解释和公式使用的概念/术语对我来说太复杂了,他们认为读者知道我从未听说过的某些事情. .
我想在2D网格上使用它(填充墙壁(无法实现),硬币(可取)和移动的敌人(必须不惜一切代价避免)).整个目标是收集所有硬币而不触及敌人,我想使用马尔可夫决策过程(MDP)为主要玩家创建AI .以下是它的部分外观(请注意,与游戏相关的方面在这里并不是很重要.我只是想了解一般的MDP):

根据我的理解,MDP的粗略简化是它们可以创建一个网格,它保持我们需要去的方向(指向我们需要去的地方的"箭头"网格的类型,从网格上的某个位置开始)达到某些目标并避免某些障碍.具体到我的情况,这意味着它允许玩家知道去哪个方向收集硬币并避开敌人.
现在,使用MDP术语,这意味着它创建了一个状态集合(网格),它保存某个特定状态的某些策略(要采取的操作 - >上,下,右,左)(网格上的一个位置) ).这些政策由每个州的"效用"值决定,这些价值本身是通过评估在短期和长期内获得多少益处来计算的.
它是否正确?还是我完全走错了路?
我至少想知道以下等式中的变量在我的情况中代表什么:

(取自Russell&Norvig的"人工智能 - 现代方法"一书)
我知道这s将是网格中所有方块的列表,a将是一个特定的动作(上/下/右/左),但其余的呢?
如何实施奖励和效用函数?
如果有人知道一个简单的链接,显示伪代码以非常慢的方式实现与我的情况相似的基本版本,那将是非常好的,因为我甚至不知道从哪里开始.
谢谢你宝贵的时间.
(注意:随意添加/删除标签或在评论中告诉我是否应该提供有关某些内容或类似内容的更多详细信息.)
用于人工智能目的的最佳编程语言是什么?
请注意,使用建议的语言我必须能够使用任何AI技术(或至少大多数).
我刚才读过关于神经网络的文章,我理解ANN(特别是通过反向传播学习的多层感知器)如何能够学会将事件归类为真或假.
我认为有两种方法:
1)你得到一个输出神经元.它的值大于0.5,事件可能是真的,如果它的值<= 0.5,则事件可能是错误的.
2)你得到两个输出神经元,如果第一个的值大于第二个的值,则事件可能为真,反之亦然.
在这些情况下,ANN会告诉您事件是否可能是真的或可能是假的.它没有说明它有多大可能性.
有没有办法将这个值转换为某些赔率或直接从ANN获得赔率.我想得到一个输出,如"事件有84%的概率是真的"
我对用于标记的几个问题clustermap在seaborn.首先,可以提取层次聚类的距离值,并在树结构可视化上绘制值(可能只有前三个级别).
这是我用于创建clustermap plot的示例代码:
import pandas as pd
import numpy as np
import seaborn as sns
get_ipython().magic(u'matplotlib inline')
m = np.random.rand(50, 50)
df = pd.DataFrame(m, columns=range(4123, 4173), index=range(4123, 4173))
sns.clustermap(df, metric="correlation")
Run Code Online (Sandbox Code Playgroud)
另外两个问题是: - 如何旋转y标签,因为它们重叠在一起.
- 如何将颜色条移动到底部或右侧.(有一个关于热图的问题,但对我的情况不起作用.也没有解决颜色条的位置)
python artificial-intelligence machine-learning matplotlib seaborn
我一直在阅读有关迭代深化的内容,但我不明白它与深度优先搜索的区别.
我知道深度优先搜索越来越深入.
在迭代深化中,您建立一个级别的值,如果该级别没有解决方案,则递增该值,然后从头开始(根).
这不会与深度优先搜索相同吗?
我的意思是你会继续增加和增加,直到找到解决方案.我认为这是同样的事情!我会走同一个分支,因为如果我从头开始,我会像以前一样走下同一个分支.
algorithm search artificial-intelligence depth-first-search iterative-deepening
我正在做一个简单的学习模拟,屏幕上有多个生物.他们应该学习如何吃,使用他们简单的神经网络.它们有4个神经元,每个神经元激活一个方向的运动(从鸟的视角看是一个2D平面,因此只有四个方向,因此需要四个输出).他们唯一的输入是四只"眼睛".当时只有一只眼睛可以活动,它基本上用作指向最近物体(绿色食物块或其他生物体)的指针.
因此,网络可以这样想象:

有机体看起来像这样(在理论和实际模拟中,它们真的是红色的块,它们的眼睛围着它们):

这就是它的样子(这是一个老版本,眼睛仍然不起作用,但它是相似的):

现在我已经描述了我的一般想法,让我了解问题的核心......
初始化 | 首先,我创造了一些生物和食物.然后,将其神经网络中的所有16个权重设置为随机值,如下所示:weight = random.random()*threshold*2.阈值是一个全局值,描述每个神经元需要获得多少输入才能激活("激活").通常设置为1.
学习 | 默认情况下,神经网络中的权重每步降低1%.但是,如果某些有机体实际上设法吃东西,那么最后一个有效输入和输出之间的联系就会得到加强.
但是,有一个大问题.我认为这不是一个好方法,因为他们实际上并没有学到任何东西!只有那些随机设定为有益的初始体重的人才会有机会吃东西,然后只有他们的体重会增强!那些与他们的关系设置得很糟糕的人呢?他们只会死,不会学习.
我该如何避免这种情况?想到的唯一解决方案是随机增加/减少权重,这样最终有人会得到正确的配置,并偶然吃掉一些东西.但我觉得这个解决方案非常粗糙和丑陋.你有什么想法?
编辑: 谢谢你的答案!其中每一个都非常有用,有些只是更相关.我决定使用以下方法:
python simulation artificial-intelligence machine-learning neural-network
algorithm ×2
python ×2
definition ×1
fuzzy-logic ×1
logic ×1
markov ×1
matplotlib ×1
seaborn ×1
search ×1
simulation ×1
theory ×1