task2

文本预处理

建立字典

记一个文本预处理需要用到的字典,学习一下python

class Vocab(object):
    def __init__(self, tokens, min_freq=0, use_special_tokens=False):
        counter = count_corpus(tokens)  # : 
        self.token_freqs = list(counter.items())
        self.idx_to_token = []
        if use_special_tokens:
            # padding, begin of sentence, end of sentence, unknown
            self.pad, self.bos, self.eos, self.unk = (0, 1, 2, 3)
            self.idx_to_token += ['', '', '', '']
        else:
            self.unk = 0
            self.idx_to_token += ['']
        self.idx_to_token += [token for token, freq in self.token_freqs
                        if freq >= min_freq and token not in self.idx_to_token]
        self.token_to_idx = dict()
        for idx, token in enumerate(self.idx_to_token):
            self.token_to_idx[token] = idx

    def __len__(self):
        return len(self.idx_to_token)

    def __getitem__(self, tokens):
        if not isinstance(tokens, (list, tuple)):
            return self.token_to_idx.get(tokens, self.unk)
        return [self.__getitem__(token) for token in tokens]

    def to_tokens(self, indices):
        if not isinstance(indices, (list, tuple)):
            return self.idx_to_token[indices]
        return [self.idx_to_token[index] for index in indices]

def count_corpus(sentences):
    tokens = [tk for st in sentences for tk in st]
    return collections.Counter(tokens)  # 返回一个字典,记录每个词的出现次数

语言模型

n元语法和马尔可夫假设

马尔可夫假设:一个词的出现只与前面n个词有关

基于统计的语言模型:n元语法

马尔可夫链

n元模型的缺陷

1.参数空间大

p(w1)p(w2|w1)p(w3|w1,w2)

v + v**2 + v**3

2.数据稀疏

齐夫定律:大多数单词的频率很小

循环神经网络

基于n元模型的理论,避免缺陷

时序数据:时序数据的一个样本通常包含连续的字符

采样方式:随机采样和相邻采样。

随机采样和相邻采样示例(来自评论区)

听完课之后总结了一下随机采样和相邻采样,并且花了点时间画了一下自己理解的原理图,如果有错误请大家指出来。

0I3BsBmshG3xRWggUDH4v.jpg

本次课程中,讲课的老师讲的非常的详细,包括前面语言模型,N元模型,都非常的清楚。
建议第一次没有看懂的同学多看几次。

循环神经网络

循环神经网络

image

梯度衰减或梯度爆炸

反向传播方式:通过时间反向传播,BPTT(针对循环层的训练算法)

梯度是幂的形式,指数是时间步数

应对方法:裁剪梯度(只能应对梯度爆炸)

\min\left(\frac{\theta}{|\boldsymbol{g}|}, 1\right)\boldsymbol{g}

超参数

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。 通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

epoch

深度学习中 number of training epochs 中的 epoch到底指什么?

回答一

epoch:1个epoch表示过了1遍训练集中的所有样本。

RNN的state

定义模型RNN中的state维护一些状态,都是维护哪些状态,这些状态具体什么作用和效果呢?

对于RNN来讲,就是隐藏状态H,因为RNN在计算H_{t}时会用到H_{t-1},所以需要维护这个状态

你可能感兴趣的:(task2)