Day 7 Self-attention(一) input和output

前言

今天开始终於要来讲self-attention了,由於我对於self-attention比较不熟,因此先透过
李弘毅老师的影片来恶补一下,影片连结

self-attention


在CNN中,Model的输入通常都是一个vector,但是如果今天的输入是一排的向量,也就是说每次输入的长度都不一样呢,那model要怎麽处理呢?

这个问题就像是说翻译问题,I have a pen 我有一支笔,这是一个由四个字的序列转换为五个字序列的过程,所以输入和输出的长度是不一样的


在处理文字转成向量(vector)的时候,有两个方法,一个就是利用One-hot Encoding,如果英文有10万个字,那就创建一个10万的vector,然後把所有的字都去做标签,如上图所示,但是这样做会有一个问题,就是没有办法知道字跟字之间的关系,因此就出现了一个word embedding的方法,可以利用这个方法在标签文字的时候知道字和字之间的关系


那这个模型的输出会是什麽呢?
会有三个可能性
第一个可能性
每一个vector都输出一个label,也就是说输出跟输入的长度是一样的
例如:词性标注
第二个可能性
整个sequence只需要输出一个label
例如:情感分析,可以让机器去训练出一个句子是正面的句子还是负面的句子
第三个可能性
要让机器自己猜说要输出多少个label
例如上面翻译的举例,四个字的序列转换成5个字的序列


当我们现在有4个vector输出的时候,我们可以把这四个vector都丢进全联接层
但是这样会出现一个问题,就是我们没有办法判断这4个vector的相关联性,但是如果我们将这四个vector分别丢进每一个对应输出的全连阶层,除了会造成运算量过大,还会产生一个问题,就是没办法判断到底要输出多少个label

今天先打到这边,明天继续


<<:  [Day3] Rust 函数 基本 / 进阶 使用

>>:  现况访谈与差异分析

【从实作学习ASP.NET Core】Day26 | 前台 | PayPal 订单付款 (1)

接续昨天提到的 PayPal Checkout ,今天要试着把 PayPal 付款按钮加到页面上 P...

居家必备良药的生存之道

即便政府三令五申不得将成药或保健药品夸大疗效,各大药厂似乎都阳奉阴违,因为实在没办法,这块市场的大饼...

为你自己学 Laravel - Day 29 前端生态圈

嘿~~ 各位好,我是菜市场阿龙! Youtube 频道:https://www.youtube.co...

Day 6 网路宝石:AWS VPC 架构 Routes & Security (下)

NACL vs SG 的安全设定介绍 当请求想进出在 Private Subnet 内的 EC2 ...

【Day08】Git 版本控制 - GitHub 简介

了解本地端的版本控制该如何进行後,必须再学习怎麽将档案 push 到 Remote Reposito...