fasttext工具介绍及迁移学习概念(包含训练词向量)

1.fasttext介绍

1.1 fasttext作用

1.2 fasttext工具包的优势

1.3下载fasttext 

 2.迁移学习概念 

2.1 预训练模型(Pretrained model):

2.2 微调(Fine-tuning):

2.3 微调脚本(Fine-tuning script):

3.迁移学习的两种方式 

4.训练词向量 

4.1 词向量的相关知识:

4.2 练词向量的过程

4.3训练词向量  


1.fasttext介绍

1.1 fasttext作用

作为NLP工程领域常用的工具包, fasttext有两大作用:

  • 进行文本分类
  • 训练词向量

1.2 fasttext工具包的优势

  • 正如它的名字, 在保持较高精度的情况下, 快速的进行训练和预测是fasttext的最大优势.
  • fasttext优势的原因:
  • fasttext工具包中内含的fasttext模型具有十分简单的网络结构.
  • 使用fasttext模型训练词向量时使用层次softmax结构, 来提升超多类别下的模型性能.
  • 由于fasttext模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度.

1.3下载fasttext 

pip install fasttext

 2.迁移学习概念 

💡有关迁移学习的相关概念:

  • 预训练模型(Pretrained model)
  • 微调(Fine-tuning)
  • 微调脚本(Fine-tuning script)

2.1 预训练模型(Pretrained model):

  • 一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型,因为语言模型的训练是无监督的,可以获得大规模语料,同时语言模型又是许多典型NLP任务的基础,如机器翻译,文本生成,阅读理解等,常见的预训练模型有BERT, GPT, roBERTa, transformer-XL等.

2.2 微调(Fine-tuning):

  • 根据给定的预训练模型,改变它的部分参数或者为其新增部分输出结构后,通过在小部分数据集上训练,来使整个模型更好的适应特定任务.

2.3 微调脚本(Fine-tuning script):

  • 实现微调过程的代码文件。这些脚本文件中,应包括对预训练模型的调用,对微调参数的选定以及对微调结构的更改等,同时,因为微调是一个训练过程,它同样需要一些超参数的设定,以及损失函数和优化器的选取等, 因此微调脚本往往也包含了整个迁移学习的过程.

  • 关于微调脚本的说明:

    • 一般情况下,微调脚本应该由不同的任务类型开发者自己编写,但是由于目前研究的NLP任务类型(分类,提取,生成)以及对应的微调输出结构都是有限的,有些微调方式已经在很多数据集上被验证是有效的,因此微调脚本也可以使用已经完成的规范脚本.

3.迁移学习的两种方式 

  • 直接使用预训练模型,进行相同任务的处理,不需要调整参数或模型结构,这些模型开箱即用。但是这种情况一般只适用于普适任务, 如:fasttest工具包中预训练的词向量模型。另外,很多预训练模型开发者为了达到开箱即用的效果,将模型结构分各个部分保存为不同的预训练模型,提供对应的加载方法来完成特定目标.
  • 更加主流的迁移学习方式是发挥预训练模型特征抽象的能力,然后再通过微调的方式,通过训练更新小部分参数以此来适应不同的任务。这种迁移方式需要提供小部分的标注数据来进行监督学习.

💡关于迁移方式的说明:

直接使用预训练模型的方式, 我们下面通过fasttext的词向量迁移中学习


4.训练词向量 

4.1 词向量的相关知识:

  • 用向量表示文本中的词汇(或字符)是现代机器学习中最流行的做法, 这些向量能够很好的捕捉语言之间的关系, 从而提升基于词向量的各种NLP任务的效果.

4.2 练词向量的过程

  • 第一步: 获取数据
  • 第二步: 训练词向量
  • 第三步: 模型超参数设定
  • 第四步: 模型效果检验
  • 第五步: 模型的保存与重加载

4.3训练词向量  

  • 数据集采用英语维基百科的部分网页信息 
# 代码运行在python解释器中
# 导入fasttext
>>> import fasttext
# 使用fasttext的train_unsupervised(无监督训练方法)进行词向量的训练
# 它的参数是数据集的持久化文件路径'data/fil9'
# 注意,该行代码执行耗时很长
>>> model1 = fasttext.train_unsupervised('data/fil9') 

# 可以使用以下代码加载已经训练好的模型
>>> model = fasttext.load_model("data/fil9.bin")

# 有效训练词汇量为124M, 共218316个单词
Read 124M words
Number of words:  218316
Number of labels: 0
Progress: 100.0% words/sec/thread:   53996 lr:  0.000000 loss:  0.734999 ETA:   0h 0m
  • 查看对应的词向量 
# 通过get_word_vector方法来获得指定词汇的词向量
>>> model.get_word_vector("the")

array([-0.03087516,  0.09221972,  0.17660329,  0.17308897,  0.12863874,
        0.13912526, -0.09851588,  0.00739991,  0.37038437, -0.00845221,
        ...
       -0.21184735, -0.05048715, -0.34571868,  0.23765688,  0.23726143],
      dtype=float32)

💡后期相关的参数可以再做调整 ,使用预训练模型的方式比较简单, 接下来的迁移学习实践将主要讲解通过微调的方式进行迁移学习.

 

 

 

 

 

 

 

 

  • 44
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值