Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

您好,可否添加一个默认中文summary的选项。 #47

Closed
dooozo opened this issue Mar 7, 2023 · 6 comments
Closed

您好,可否添加一个默认中文summary的选项。 #47

dooozo opened this issue Mar 7, 2023 · 6 comments

Comments

@dooozo
Copy link

dooozo commented Mar 7, 2023

目前是默认英文summary,另外即使原始语言和目标语言都是中文的情况下,仍然会输出英文summary。感谢作者。

@yetone
Copy link
Collaborator

yetone commented Mar 7, 2023

给我一段你要 summary 的文字,我自测一下

@dooozo
Copy link
Author

dooozo commented Mar 7, 2023

您好,刚刚测试了几次并没有再出现在原始语言和目标语言都是中文的情况下仍然输出英文summary的情况,下次出现的时候我记录一下。麻烦您了。另外增加目标语言选项记忆而不是每次都是默认目标为英语的建议您考虑下。谢谢作者。

@dooozo
Copy link
Author

dooozo commented Mar 7, 2023

出现了,文字为:

在比较古老的时候,我们是用纯统计的方法进行建模的。统计方法直接构建词汇表,然后使用统计方法预测词频等,来理解一段文字。这种方法将一个个单词本身当成操作的对象(hard-token),没法理解单词的任何含义。(统计学时代)

后来,有语言学家提出,可以用一个词语的关联词来解释这个词语。例如星巴克往往与咖啡馆、餐厅相连,于是星巴克的意思可能与一个地点接近。这种想法引出了WordNet。但是WordNet依然将词汇理解成一个hard token,即使能理解一部分词汇的含义,但是没法在不同句子中显示不同的含义,也就是没有根据上下文理解一词多义的能力。而且语义网的搜索实在是太慢了,因为搜索空间是离散的。(语义网时代)

为了加快运算,学者提出可以使用一些数字的方法来表示计算机内不同的文本名词,这就引出了word embedding,就是把每一个词(hard token)转换成一个数字(soft token)再存储在计算机内,通过对数字的加减乘除,来完成计算机的各种处理。具体完成数字化的模型主要是Word2Vec。由于数字是连续的,存储压力大大下降,语义的表示也更佳精准。这大大提升了运算效率,使得批量计算和深度理解成为可能。embedding的提出是大语言模型的巨大里程碑,但是Word2Vec依然是静态的,没法理解一词多义。(embedding时代 或。数字化时代)

为了解决一次多义的问题,学者提出根据每个句子的语境分别训练embedding,于是有了ELMo。有了连续的数值表示,各种深度学习方法都变得可行。ELMo借鉴了CV里一个叫做微调(fintune)的深度学习方法,在用Word2Vec获得了每个词的数字embedding之后,再在具体的语境下对这个数字做一个小小的调整,来获得一词多义的能力。ELMo是所有后续大模型发展的基础,但是脑容量还是太小了,一词多义清情况下,词的语义并不够完整。(一词多义时代)

为了提高模型的容量,学者开始想方设法换掉ELMo的容积,于是去Seq2seq界取经,找到了脑容量大又可以并行计算的Transformer,用Transformer(差不多一个大脑的大小)换掉了ELMo的two side-LSTM(差不多一个细胞组织的大小),于是诞生了GPT和BERT。这两个模型都是基于Transformer的,但GPT是单向Transformer,更适合生成;BERT是双向Transformer,更适合理解。GPT,就是ChatGPT的最早祖先。这两个模型都先在很大的语料库上预训练,然后在特定的任务上微调,其实和一词多义时代的Word2Vec+ELMo的思路并没有太大不同。这也导致了这个阶段,模型依然依赖于特定的任务,没法成为通才。(BERT时代)

为了提高模型的泛化能力,学界提出了纯预训练不微调范式。这个范式的基础是单向Transformer,因为双向Transformer基于有标签数据才效果好,而单向Transformer不需要人工打标签就能参数有效地学习,所以BERT没法做的很大,但GPT可以,所以提出了GPT-2,只预训练,不微调。GPT-2的提出是OpenAI对于GPT的一个探索,如果效果好,说明可以继续做大。结果证明,GPT-2可以在各种任务上都达到非常好的性能,拥有极强的泛化能力。然而,在特定的任务上,依旧是BERT比较占优势。(GPT-2时代)

OpenAI发现GPT-2效果不错后,开始All in GPT-3,这是一个挺有希望的leap of faith。GPT-3就是GPT-2继续往上叠,原理上很简单,这也是为什么Yann LeCun说GPT-3缺乏创新。ChatGPT就是GPT-3再经过高质量数据的微调,相当于回到了一词多义时代的训练范式,却展现出了非常强的效果,大幅领先于GPT-3,这也是让很多学者反对ChatGPT的原因。换句话说,ChatGPT和GPT-3的创新并不是深度学习的创新,而是数据的创新。

下面细致聊一下GPT-2/3/Chat(LLM)的原理。

大语言模型的语言生成的原理叫做自回归模型,是统计上一种处理时间序列的方法。例如现在有一个句子:“我早上去了星巴克”,将其拆分为“我”、“早上”、“去了”、“星巴克”这四个词(我们叫做 token)。大语言模型是这样去学习的:第一个单词是,输入到模型中。经过了一个Transformer模块后,它输出希望被训练成第一个字,也就是“我”。

在第二个位置,它的输入是“我”,它的输出是“早上”,第三个位置输入是“早上”,输出是“去了”,这样不断地一轮一轮迭代,每个细胞能够根据我现在的这个单词,去预测下一个单词。最后这个模型就能够学到,“我早上去了星巴克”的下一句话应该是“星巴克里的咖啡很好喝”,它认为生成“星巴克里的咖啡很好喝”比“我明天要去乘飞机”这样一句话合理得多。

自回归模型的关键是根据你前面已经出现过的内容,来推测它的下一个字,下一句话应该是怎样生成的,在这样不断的迭代过程中,它就能学会如何去生成一句话、一个段落,以及一篇文章。

总的来说,LLMs可以理解为成规模的语言模型。从历史的角度来看,前面说的BERT和GPT并没有达到足够大的规模。直到GPT-2、GPT-3出现了,它们才达到了较大的量级。大家发现语言模型爆炸式增长,从一个细胞长成一个脑子,这种程度上的增长才带来了LLMs。所以我们一般理解LLMs,这个语言模型规模大到了至少到GPT-1或2阶段,它的参数量能够突破1亿或者10亿阶段才能称之为大模型。

至于它是怎么诞生的,回归到前面的问题,一开始是纯统计阶段,后面变成数字化阶段,第三个就是在不同任务上,对它进行分类提升,第四个阶段就是保证基本在所有的任务上都能达到不错的结果。

前期的技术积累可以分为这几点,第一个是数字化,把文字变成了数字。第二个积累是整个深度学习界都在用的方法,就是微调法,在不同的任务上,都让它变得很好。第三个是不再对任务进行划分,让它兼顾全局,在所有任务上都能获得很好的结果。

相较于语言模型BERT来说,GPT有很大的优势,它是不需要进行数据微调的,也就是说,它能够在很多的任务上,直接就表现出非常强的性能。GPT能够纯无监督学习,它可以把全世界的高质量的数据都从互联网上扒下来,做成它的数据集,从而把数据量做得非常大,保证数据的充分性。它的参数量很大的时候,就把这些数据都给记到脑子里,相当于你拥有一个超强大脑之后,还拥有读不完的书,这样就能不断的获取知识。我觉得这是GPT成功的一大前提。

@yetone
Copy link
Collaborator

yetone commented Mar 7, 2023

@dooozo 感谢你提供的样本!我这就修复!

@yetone
Copy link
Collaborator

yetone commented Mar 7, 2023

@dooozo 你好,最新版已经十分完美地解决了这个问题

Screenshot 2023-03-07 at 20 20 20

@dooozo
Copy link
Author

dooozo commented Mar 7, 2023

太厉害啦!辛苦作者啦!

@dooozo dooozo closed this as completed Mar 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants