为什么ChatGPT等AI应用使用强化学习而不是监督学习

我也是无意中入了强化学习的领域,因为我原本研究云计算的任务调度,我发现近几年的工作都是基于强化学习的。所以感觉强化学习一定是大趋势,恰好现在ChatGPT这些人工智能产品出现,更是助推了强化学习的风。那么为什么ChatGPT使用强化学习而非监督学习,其实监督学习在图像识别等等人工智能应用中已经非常成熟了。

我的理解是:监督学习只会墨守成规,而强化学习会创新,如乔布斯总是说“用户不知道自己想要什么,我们要为其创造出来,引导其使用”,这一点从乔布斯引导用户使用鼠标到全触屏手机得到了明显的体现。如果让强化学习智能体按着监督学习的方式去学习,那么将人工智能限定于人类固有的思维当中,在现有的基础上搜索答案,不会产生什么创造性的结果。

而且,人类的答案也并非总是对的,有时候我们也不知道自己想要的是什么,强化学习智能体可以帮我们探索,给出我们意想不到的答案,这就是强化学习的魅力。

继续代码规划之模型存储和重复加载

我们学习的时候要注意一点,要在懂和速度之间进行平衡,有许多东西是工具,不是我们的目标本身,我们会用即可,不要深究,你要是深究就会编程一个DAG的深度遍历,永远到不了头,而且严重偏离目标。比如我们不必了解pytorch内部是如何工作的,只要会用即可,我们不必知道为什么模型要存储成.pkl文件,你只要会存会取即可

import torch
import matplotlib.pyplot as pltx=torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
y=x.pow(2)+0.2*torch.rand(x.size())def save():#定义网络net1=torch.nn.Sequential(torch.nn.Linear(1,10),torch.nn.ReLU(),torch.nn.Linear(10,1))#优化器optimizer=torch.optim.SGD(net1.parameters(),lr=0.1)#定义损失函数loss_f=torch.nn.MSELoss()#开训for i in range(100):prediction=net1(x)loss=loss_f(prediction,y)optimizer.zero_grad()loss.backward()optimizer.step()#OK了#打印结果,绘图plt.figure(1,figsize=(10,3))plt.subplot(131)plt.title('Title')plt.scatter(x.data.numpy(),y.data.numpy())plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5)#存储学习好的网络torch.save(net1,'net.pkl')torch.save(net1.state_dict(),'net_params.pkl')#重新加载网络函数
def restore_net():net2=torch.load('net.pkl')prediction=net2(x)#绘制结果plt.subplot(132)plt.title('net2')plt.scatter(x.data.numpy(),y.data.numpy())#绘制散点图plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5)#重新加载模型的参数
def restore_netparams():#如果加载模型参数,就得先建立一个神经网络模型,再赋值net3=torch.nn.Sequential(torch.nn.Linear(1,10),torch.nn.ReLU(),torch.nn.Linear(10,1))#建参数复制net3.load_state_dict(torch.load('net_params.pkl'))prediction=net3(x)#绘制结果plt.subplot(133)plt.title('nets3')plt.scatter(x.data.numpy(),y.data.numpy())plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5)plt.show()save()restore_net()restore_netparams()

注意,要多次运行才会有效果,因为我没有设置内部循环
在这里插入图片描述

然后再来试试批量训练的效果

import torch
import torch.utils.data as Datatorch.manual_seed(1)batch_sizes=5
#通过torch.linspace函数创建了两个大小为10的张量x和y,分别代表输入特征和目标值。
x=torch.linspace(1,10,10)
y=torch.linspace(10,1,10)#组成数据集
torch_dataset=Data.TensorDataset(x,y)
#批量加载数据
loader=Data.DataLoader(dataset=torch_dataset,batch_size=batch_sizes,shuffle=True,num_workers=2)#这怎么有点类似spark等大数据引擎的计算机制def show_batch():for i in range(3):for step,(batch_x,batch_y) in enumerate(loader):print('Epoch: ', i, '| Step: ', step, '| batch x: ',batch_x.numpy(), '| batch y: ', batch_y.numpy())if __name__ == '__main__':show_batch()

然后是不同优化器的效果

import torch
import torch.utils.data as Data
import torch.nn.functional as F
import matplotlib.pyplot as pltLR = 0.01
BATCH_SIZE = 32
EPOCH = 12x=torch.unsqueeze(torch.linspace(-1,1,1000),dim=1)
y=x.pow(2)+0.1*torch.normal(torch.zeros(*x.size()))plt.scatter(x.data.numpy(),y.data.numpy())
plt.show()#加载数据
torch_dataset=Data.TensorDataset(x,y)
loader=Data.DataLoader(dataset=torch_dataset,batch_size=BATCH_SIZE,shuffle=True,num_workers=2)#定义神经网络
class Net(torch.nn.Module):def __init__(self):super(Net, self).__init__()self.hidden=torch.nn.Linear(1,20)self.output=torch.nn.Linear(20,1)def forward(self,x):x=F.relu(self.hidden(x))x=self.predict(x)return xif __name__ == '__main__':# different netsnet_SGD = Net()net_Momentum = Net()net_RMSprop = Net()net_Adam = Net()nets = [net_SGD, net_Momentum, net_RMSprop, net_Adam]# different optimizersopt_SGD = torch.optim.SGD(net_SGD.parameters(), lr=LR)opt_Momentum = torch.optim.SGD(net_Momentum.parameters(), lr=LR, momentum=0.8)opt_RMSprop = torch.optim.RMSprop(net_RMSprop.parameters(), lr=LR, alpha=0.9)opt_Adam = torch.optim.Adam(net_Adam.parameters(), lr=LR, betas=(0.9, 0.99))optimizers=[opt_SGD,opt_Momentum,opt_RMSprop,opt_Adam]loss_f=torch.nn.MSELoss()loss_his=[[],[],[],[]]#训练for i in range(EPOCH):print("epoch:",i)for step,(b_x,b_y) in enumerate(loader):for net ,opt,l_his in zip(nets,optimizers,loss_his):predict=net(b_x)loss=loss_f(predict,b_y)opt.zero_grad()loss.backward()opt.step()l_his.append(loss.data.numpy())#绘制不同优化器的损失函数值labels=['SGD', 'Momentum', 'RMSprop', 'Adam']for i,l_his in enumerate(loss_his):plt.plot(l_his,label=labels[i])plt.legend(loc='best')plt.xlabel('xsteps')plt.ylabel('loss')plt.ylim(0,0.2)plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22052.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

82页PPT | 斯坦福最新ChatGPT: 提示学习, 指导微调和RLHF

今早在推特上刷到斯坦福的课程,终于开始讲ChatGPT了,但是视频还是没有放出来,不过PPT放出来也已经很不错啦。 一共82页,放不完,下面截图几个重要的slide: 课程链接:https://web.stanford.edu/cl…

ChatGPT的前世今生: 从GPT-1到GPT-4,自然语言处理的壮丽蜕变

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之…

transformer与vit

transformer结构,位置编码复现 https://wandb.ai/authors/One-Shot-3D-Photography/reports/-Transformer—Vmlldzo0MDIwMjc 训练部分 https://nlp.seas.harvard.edu/2018/04/03/attention.html#training transform训练代码从0构建 https://blog.csdn.net/BXD1…

有点“偏科”的ChatGPT

不严谨的结论(不排除玩的方式有问题😄): ChatGPT貌似擅长简单编程;ChatGPT“偏科”历史;无需登陆网址:https://gpt.chatapi.art 下面问一些历史问题。 韩信是被谁杀的? 简直胡说八道…

计算机视觉与深度学习 | Visual ChatGPT:微软开源视觉(图文)聊天系统——图像生成、迁移学习、边缘检测、颜色渲染等多功能(附代码下载链接)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== Visual ChatGPT: Talking, Drawing and Editing with V

语音助手——简介与交互过程

语音助手简介 语音助手这个产品的目的,是希望通过语音说话的方式,来实现闲聊陪伴、知识获取、设备控制等需求,对应的就有三种不同的助手类型:闲聊型、问答型、指令型。 闲聊型助手用于实现闲聊陪伴的目的,通过AI的技术…

STATA regress回归结果分析

对于STATA回归结果以前一直不清不楚,每次都需要baidu一波,因此今天将结果相关分析记录下: 如上图 上面左侧的表是用来计算下面数据的,分析过程中基本不会用到 右侧从上往下 1.Number of obs 是样本容量 2.F是模型的F检验值&a…

python数据分析:回归分析(regression analysis)

何为回归分析: 回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为…

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录 你还在手撸SQL?ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程 总结 你还在手撸SQL?ChatGPT笑晕在厕所 一、背景 经典3…

如何使用 OpenAI API ChatGPT,通过自然语言生成 SQL 语句(简易版)

简介 Human Language to SQL Translator 是一个可以通过ChatGPT 可以生成 SQL 语句的网站。 开源地址: https://github.com/whoiskatrin/sql-translator 这里使用 python 对其进行了复现 代码 """自然语言生成 SQL """ import op…

写sql真就有手就行?ChatGPT让sql变得如此简单

前言介绍 随着数据库的应用越来越广泛,不仅仅是开发人员需要操作数据库,在日常的办公、数据分析场景,数据库的操作也变得越来越重要和普及,但是很多人面对sql增删改查的各种sql语法,又打了退堂鼓。近期ChatGPT的流行&…

人工智能中的图灵测试

大家都知道,人工智能是一个交叉性的学科,它涉及到很多的技术,比如机器学习、深度学习、人工神经网络等技术,当然还少不了图灵测试。在人工智能中,图灵测试非常实用,可以说没有图灵测试,我们现在…

【人工智能】图灵测试

图灵测试(The Turing test)由艾伦麦席森图灵发明,指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。 进行多次测试后,如果有…

资讯 | 图灵测试已经无法评估现在的人工智能了!

随着人工智能成为我们技术领域中重要组成部分,每一种新的工具和技术都需要一个基准。目前位置,最广为人知的AI基准测试工具就是图灵测试。 自1950年图灵测试提出来以后,人工智能领域已经取得了长足的发展。但,越来越清楚的是&…

itchat--使用python实现与图灵机器人交互

应用场景 七夕快到了,看着那些情侣在一起腻腻歪歪,整天短消息停不下来,众多苦逼的程序猿或许只能对着电脑了。是不是羡慕嫉妒恨呢!手机另一端怎么没人和自己在一起聊天呢?是不是也想有个人可以秒回自己的消息。没事&a…

面对面的办公室——纪念艾伦•图灵百年诞辰

面对面的办公室——纪念艾伦•图灵百年诞辰 Comments>> 科学松鼠会 发表于 2012-07-07 06:44 | Tags 标签: 原创, 图灵百年诞辰 【图片出处:http://www.cs.swan.ac.uk/~csarnold/】 作者:玑衡 本文节选自作者为纪念艾伦•图灵诞辰一百…

从达特茅斯会议到图灵奖---人工智能学习分享

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。” 生活在信息大爆炸的今天…

【图灵奖得主】Jeffrey D. Ullman 斯坦福大学

【图灵奖得主】Jeffrey D. Ullman,斯坦福大学名誉教授,在线学习平台 Gradiance Corporation 的首席执行官。主要研究兴趣为编译器设计和数据库系统。毕业于哥伦比亚大学,在普林斯顿大学获得计算机科学博士学位。于 1979 年加入斯坦福大学&…

【置顶】图灵近期出版和即将出版的新书

图灵近期重点新书 堪与《重构》媲美的软件实战图书Amazon 5星评价里程碑性著作 中文书名: 修改代码的艺术 英文书名: Working Effectively with Legacy Code 原书作者: Michael Feathers 译者 : 刘未鹏 原书出版公司: Prentic…

(转)图灵测试与人工智能

什么是图灵测试? 在一篇1950年发表的著名论文《Computing Machinery and Intelligence》中,数学家阿兰图灵详细讨论了“机器能否拥有智能?”的问题。有趣的是,作为计算机科学与人工智能领域共同的先驱,图灵成功定义了什…