浅谈ARPG游戏深度强化学习

所谓的计算机深度学习没有你相信的那么难。简单来说就是让计算机按照一个或者多个特定的规则去实验,去总结,然后得出结果,最后归纳成一种方法。
举个例子就是:以前的计算机是人类输入猫的图片,对计算机下定义说这就是猫,计算机在需要使用的时候调用出来即可。(但是人们在定义的时候难免会有或多或少的错误,难免计算机调用的时候会有错误),现在的计算机深度学习就是,我们不再告诉计算机,猫是什么了。而是给计算机一堆猫的图片。告诉计算机这里面有猫。计算机通过计算去总结和理解照片里猫的特征,然后自己归纳出到底什么是猫,猫是什么样子之类的。
用比较官方的话来说的话就是 :机器学习就是人类定义一定的计算机算法,让计算机根据输入的样本和一些人类的干预来总结归纳其特征与特点,并用这些特征和特点与一定的学习目标形成映射关系,进而自动化地做出相应反应的过程。

未来是大数据的时代,人工智能会取代大部分的人力,就像部分的快递分拣行业已经由小黄人完全取代了,(某种意义上看,我们像是被机器人抢了饭碗一样)其实已经有人多人在思考这个问题了,发展人工智能到底会不会让绝大多数人失业呢?如果我们仔细思考一下,我们就会发现。现在的情况 就像当年第一次工业革命蒸汽时代的到来,机器的出现导致了很多制衣手工业者短时间内失业(一台蒸汽机就可以挺上百人的效率),引起了当时的恐慌。很多工人甚至在运输机器的路上去砸坏机器(但当时英国政府法律规定毁坏机器是要绞刑的)但是若干年之后的今天看,今天工人因机器导致工人大量失业了吗?没有(反而是工厂找不到工人,工人供不应求了),只不过大大增大了整个世界的生产力(本来在手工业时代一人一天一套衣服也都造不出来,但进入工业时代,一天就能生产数十套。也整体提高了整个世界的物质丰富,手工业时代一般人也许只有两三套衣服,工业时代一般人就可以拥有几十件衣服,而且鲜艳夺人。

但是并不是说机器人会对人类的就业产生任何不利影响(就像方便面产业受到外卖的冲击一样,不能跟上时代的行业就要被淘汰),在我看来在未来可能一些繁重复杂的工作都会交给人工智能去完成,而人类会去完成一些只有心才能做的东西,(就像是说,只有有感情的生命才能完成的工作)就比如说教育学生和陪伴老人之类的。(也许真的可以实现8小时工作制度,多一点时间和自己喜欢的人在一起)但是在这幻想之前,我们要还需要先完善深度学习技术。

在这种前景下(信息化和大数据的时代),人类作为老师已经很难教育人工智能这个学生了。所以我们需要这位学生积极向上学习,有着自己独立的思考能力。这就是所谓深度学习,目前来看深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。

下面举一个简单的例子(走迷宫的方法,如果让人去定义走迷宫的方法那么会狠麻烦。如果让计算机去自己定义的话,那么就会方便很多,计算机可以在短时间内进行上亿次的计算,去选择出最佳路线。去弥补人类的不足)
这里补充一点其实所谓的人工智能聊天差不多都是计算机根据你的语言去搜素相关数据,然后计算出相关的最佳回答。目前来看的话,实际上计算机还是不能理解你到底想干什么。就i只能根据网络上大数据输入的内容来计算你最有可能要表达什么。

**import numpy as np #这是调用一个计算数值的函数库这种工具可以用来存储和处理大型多维矩阵
import time
import sys #给程序外部传递参数
np.random.seed(2) #reproducible
G,W,F,T=10,-2,1,0 #goal,wall,flower,tree
MONKEY_TREE_WALL_FLOWER_MAP=[[W,W,W,W,W,W,W,W],#这个其实就是小地图的定义了。
[W,0,0,0,0,0,F,W],
[W,0,0,0,0,0,F,W],
[W,0,W,W,W,0,W,W],
[W,0,W,G,0,0,F,W],
[W,0,W,W,W,0,F,W],
[W,0,0,0,0,0,0,W],
[W,W,W,W,W,W,W,W]]
class QLearning(): #这个是就是定义让计算机自己选择走迷宫
def init(self,actions=[‘left’,‘right’,‘up’,‘down’],#因为是做出2d的效果能选择的方向只有上下左右
max_episodes=13,fresh_time=0.1,
MAP_=MONKEY_TREE_WALL_FLOWER_MAP
):
self.ACTIONS=actions
self.MAX_EPISODES=max_episodes
self.FRESH_TIME=fresh_time
self.MAP=MAP_
self.N_STATES =(len(self.MAP),len(self.MAP[0]))
def choose_action(self,state):
action_name=np.random.choice(self.ACTIONS)#行为就是再上下左右中随机选择一个
return action_name

def get_env_feedback(self,S,A): #定义选择上下左右的行为
    if A=='right' and self.MAP[S[0]+1][S[1]]!=W: # 如果是左边的话,那么 s[0]+1s[0],一个表示左边一个表示右边
        S_=(S[0]+1,S[1])
        R=self.MAP[S[0]+1][S[1]]
    elif A=='left' and self.MAP[S[0]-1][S[1]]!=W:
        S_=(S[0]-1,S[1])
        R=self.MAP[S[0]-1][S[1]]
    elif A=='up' and self.MAP[S[0]][S[1]-1]!=W:
        S_=(S[0],S[1]-1)
        R=self.MAP[S[0]][S[1]-1]
    elif A=='down' and self.MAP[S[0]][S[1]+1]!=W:
        S_=(S[0],S[1]+1)
        R=self.MAP[S[0]][S[1]+1]
    else:
        R=0       # 这里的r是一种奖励,如果你是f,那么就死了, s=0,没有路程了
        S_=S
    if R==F:
        R=0
    return S_,R

def update_env(self,S,episode,step_counter): # 这个就定义地图的样子
    n_str=self.N_STATES[0]+1
    BOARD='🏠'
    env_list=([BOARD]*self.N_STATES[1]+['\n'])*self.N_STATES[0]
    for i in range(self.N_STATES[0]):
        for j in range(self.N_STATES[1]):
            if self.MAP[i][j]==T:
                env_list[i*n_str+j]='🌳'
            elif self.MAP[i][j]==F:
                env_list[i*n_str+j]='🌼'
            elif self.MAP[i][j]==G:
                env_list[i*n_str+j]='🏴'
                    
    env_list[S[0]*n_str+S[1]]='🐒'
    interaction=''.join(env_list)
    sys.stdout.write('\r' + interaction)
    print('\n-------------------\n',end='')
        
    time.sleep(self.FRESH_TIME)
    
    if self.MAP[S[0]][S[1]]==T:
        interaction='Episode %s:total_steps=%s'%(episode+1,step_counter)
        sys.stdout.write('\r' + interaction)#这个是显示处理进度,实际上本质是print(\n',end='')
        time.sleep(0.2)  #迭代完一代后,暂停多少秒
        print('\n-------------------',end='')
def run_rl(self):#对环境的更新
    for episode in range(self.MAX_EPISODES):
        self.step_counter=0 #这个的意思是一开始的步数是0
        S=(1,1)  #start position这个是一开始的位置
        is_terminated=False
        while not is_terminated:
            self.update_env(S,episode,self.step_counter) #调用上面的地图
            A=self.choose_action(S)
            S_,R=self.get_env_feedback(S,A)#调用行为
            S=S_
            self.step_counter+=1 #每次走一步路,步数加1
        self.update_env(S,episode,self.step_counter)    

if name==“main”:

robot=QLearning()
robot.run_rl()**

这个代码的可以实验出多种路线,然后选出走出迷宫的最佳路线(这个还不行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值