自然语言处理学习总结:

一、自然语言处理(Natural Language Processing,简称NLP)被誉为人工智能皇冠上的明珠,是计算机科学和人工智能领域的一个重要方向。它主要研究人与计算机之间,使用自然语言进行有效通信的各种理论和方法。简单来说,计算机以用户的自然语言数据作为输入,在其内部通过定义的算法进行加工、计算等系列操作后(用以模拟人类对自然语言的理解),再返回用户所期望的结果。

自然语言技术面临的挑战:

语言学问题:同义词问题、情感倾向问题、长文本处理问题、歧义性问题

计算角度

使用深度学习解决自然语言处理任务的套路

  1. 处理数据。 确认网络能够接收的数据形式,然后对数据进行处理。
  2. 实现网络。 搭建网络的过程。
  3. 模型训练。 训练模型调整参数的过程。
  4. 评估&上线。 对训练出的模型效果进行评估,确认模型性能。

二、 在自然语言处理任务中,词向量(Word Embedding)是表示自然语言里单词的一种方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量。通过这种方法,实现把自然语言计算转换为向量计算。

3.CBOW和Skip-gram的算法实现

CBOW是一个具有3层结构的神经网络,分别是:

  • 输入层: 一个形状为C×V的one-hot张量,其中C代表上线文中词的个数,通常是一个偶数,我们假设为4;V表示词表大小,我们假设为5000,该张量的每一行都是一个上下文词的one-hot向量表示,比如“Pineapples, are, and, yellow”。
  • 隐藏层: 一个形状为V×N的参数张量W1,一般称为word-embedding,N表示每个词的词向量长度,我们假设为128。输入张量和word embedding W1进行矩阵乘法,就会得到一个形状为C×N的张量。综合考虑上下文中所有词的信息去推理中心词,因此将上下文中C个词相加得一个1×N的向量,是整个上下文的一个隐含表示。
  • 输出层: 创建另一个形状为N×V的参数张量,将隐藏层得到的1×N的向量乘以该N×V的参数张量,得到了一个形状为1×V的向量。最终,1×V的向量代表了使用上下文去推理中心词,每个候选词的打分,再经过softmax函数的归一化,即得到了对中心词的推理概率:

(Oi)=exp(Oi)∑jexp(Oj)({O_i})= \frac{exp({O_i})}{\sum_jexp({O_j})}softmax(Oi​)=∑j​exp(Oj​)exp(Oi​)​

Skip-gram是一个具有3层结构的神经网络,分别是:

  • Input Layer(输入层):接收一个one-hot张量 V∈R1×vocab_sizeV \in R^{1 \times \text{vocab\_size}}V∈R1×vocab_size 作为网络的输入,里面存储着当前句子中心词的one-hot表示。
  • Hidden Layer(隐藏层):将张量VVV乘以一个word embedding张量W1∈Rvocab_size×embed_sizeW_1 \in R^{\text{vocab\_size} \times \text{embed\_size}}W1​∈Rvocab_size×embed_size,并把结果作为隐藏层的输出,得到一个形状为R1×embed_sizeR^{1 \times \text{embed\_size}}R1×embed_size的张量,里面存储着当前句子中心词的词向量。
  • Output Layer(输出层):将隐藏层的结果乘以另一个word embedding张量W2∈Rembed_size×vocab_sizeW_2 \in R^{\text{embed\_size} \times \text{vocab\_size}}W2​∈Rembed_size×vocab_size,得到一个形状为R1×vocab_sizeR^{1 \times \text{vocab\_size}}R1×vocab_size的张量。这个张量经过softmax变换后,就得到了使用当前中心词对上下文的预测结果。根据这个softmax的结果,我们就可以去训练词向量模型。

在实际操作中,使用一个滑动窗口(一般情况下,长度是奇数),从左到右开始扫描当前句子。每个扫描出来的片段被当成一个小句子,每个小句子中间的词被认为是中心词,其余的词被认为是这个中心词的上下文。

 

你可能感兴趣的:(自然语言处理,学习,人工智能)