第一讲 生成式ai是什么
声明:
作者是个ai小白,所以博客会尽最大限度的详细,不建议基础很好的大佬观看。大家觉得有墨迹的地方可通过导航栏或其他方式略读,同时非常欢迎大家指正和补充博客的内容。
self attention 和 RNN 因为刚开始学 所以有待完善。
生成式人工智能要解决的问题
生成式人工智慧就是生成一些复杂而有结构的东西
怎么理解复杂:就是无法通过穷举解决的东西
分类问题不是一个复杂的问题 他的结果使能穷举出来的。
机器学习的本质
机器学习的本质 是从一堆资料中找出一个函式,比如我给一堆数(我可以确定这个是一个一次函数),然后计算出这里的a和b
那么我们推广一下,如果我们给野狗图片,然后 将这个图片转化成一个函式 得到最后的结果这个有上万个参数。
机器学习就是把 这些参数找出来。然后 我们拿出一个新的图片 看看他属于哪个类别 这个就叫做测试。
彩蛋:手搓神经网络(有待完善)
向前传播
向前传播讲解_哔哩哔哩_bilibili
逆向传播
还是用刚才的例子
这里的w11和w12是右边的w11和w12
使用矩阵表示就是这个形式
计算损失函数
通过学习率改变差值
生成式人工智慧和机器学习深度学习以及GPT之间的关系
从图片上来讲,我们的GPT可以通过深度学习进行训练。
GPT 其实是具有很多个参数的函式
GPT背后的函式也可以看成是一个向量
tranformer 介绍--- 引言 输入输出
不管是查看直播观看youtube人数还是影像处理上, 我们输入的都是一个向量,我们的输入可能是一个数字(回归)我们可能输入的是一个类别(分类)
但是加入的是一堆向量并且向量的长度是可以改变的,那么我们如何处理呢
生活中不妨有这种复杂的输入 的例子
比如我们输入一个句子,句子中的每一个单词就可以作为一个向量
This is a cat
This 作为向量1
is 作为向量2.....
如何区分这些向量:
- 方案1: onehot独热编码,但是缺点是不能看出向量之间的相似度。
- 方案2:使用wordEmbedding ,我们不难发现run和jump都是动词,dog和rabbit和cat都是动物,tree和flower都是植物,这些具有相似性质的颜色都是相似的。关于wordEbedding的内容这里不过多赘述,有感兴趣的小伙伴可以自行查阅相关资料。
举例1:
我们对N维向量的每一个都要进行一个输出。
这些应用比如给一个单词我们判定他是一个动词还是一个名词;比如给一段语音判断他是多少级的台风;比如给一个社交网络图,判断这个人是否购买..... 生活中这样的例子有很多。
举例2:
我们输入N个向量,我们只需要输出一个结果就可以。
比如我们想要了解一个产品怎么样,我们不可能一条条的阅读每一个评论,但是我们可以把所有评论作为输入,让机器输出一个值是正面还是负面;比如听一段声音判断是谁讲的;给一个分子判断他的亲水性如何。
举例3:
机器需要自己决定输出的规模。
我们在作业5会有这方面的详细介绍。
但是我们在第1个例子中会出现一个问题,比如相同的saw 我们期望他们输出不同的词性,然而简单的分类问题显然不能满足我们的需求,这个时候 我们就需要结合语境来说明一下。
我们可以设定一个window,并把整个windows都给覆盖住,但是我们都知道 windows大小是不一样的 ,所以我们无法设定。怎么解决---self attention.
self--attention
- 首先withcontext那一行 表示通过selfattention 之后 考虑到整个句子之后输出的向量。
- 将上一步得到的向量扔进FC全连接层 之后输出一个向量。
当然我们也可以叠加
attention is all you need论文解读(未完成)
https://arxiv.org/pdf/1706.03762
这个就是一个论文解读,目的是更好的理解self atteion的原理,如果读者不喜欢看请通过导航栏进行跳跃。
这个文章最早是谷歌团队为了解决机器翻译问题采用的方案
intruduction
首先介绍一下循环神经网络RNN的架构和说明
序列数据:例如天气股票数据 都是一些序列数据,或者是对于翻译文章我们的输入也是一个序列数据,我们的机器翻译也是一个序列数据 每个数据每个词都有相同的含义,而将他们通过不同的顺序组合将会表达不同的含义。
我爱你
/// 不同字符的顺序组合会表达出不同的含义
你爱我
- 如果我们想要翻译句子或者分析句子情感的时候 这个时候我们需要使用到循环神经网络
- 在金融领域:我们可以分析股票的走向和预测天气
- 在图像识别领域我们可以利用CNN模型识别出物体 然后将CNN输出的记过给RNN 组成图片的描述
为啥要引入RNN循环网络
弊端1:
多层感知机的缺点是输入的规模是确定的 隐藏层的数量也是确定的,我们想要扩展很困难。
弊端2:
对于MLP(多层感知机),输出是dest和depa所以每个词输出这两个的概率是相同的,所以每个词都会属于这俩的一种。
但是循环神经网络完美的解决了这个问题:RNN模型在每期计算的时候会同时考虑当期输入值和前期状态,并利用相同的模型架构循环下去,具体来说比如他看到下面台北的时候,他会记得前面看过leave或者arrive
每次我们的隐藏层产生输出的时候 这个结果会存放到左侧的小方块a1和a2中
在下一次进行输入输出的时候 除了会考虑隐藏层还会考虑之前存放在小方块里面的内容。
RNN的计算过程:
李宏毅机器学习-RNN网络(中英文)_哔哩哔哩_bilibili
建议看一下视频的弹幕:说白了就是简单的线性相加,弄清楚有几个来源之后 就知道怎么算了。
总结:对于RNN来说,改变了输入输出顺序也会改变结果。
注意 这里是同一个RNN在不同时间被使用的示意图,为了方便演示 所以画了三个
双向循环神经网络
相当于阅读了整个句子
GPT的原理--文字接龙
变成分类问题
机器是需要有创造力的,生成式ai需要解决的问题是生成的问题是不可以穷举的,但是如果文字接龙的话这个就变成了一个分类问题(常用的字是可以穷举的)
从生成文字到生成图片
可以将这种文字接龙的方法推广到图片接龙。