一、傳統(tǒng)機器學(xué)習(xí)與深度學(xué)習(xí)
1茎辐、傳統(tǒng)機器學(xué)習(xí)方法
- tf-idf
- Topic Model(LDA)
- SMT
- ...
2、深度學(xué)習(xí)
- CNN
- TextCNN
- FastText+TextCNN
- CNN+RNN
- ...
- RNN
- TextRNN
- RNN+CNN
- LSTM/GRU+RCNN
- Seq2Seq+Attention
- ...
二、模型(基于 Keras)
1贾节、TextCNN
- 句子 maxlen 的確定(一般選定為語料中最大長度或平均長度為佳)
-
卷積核大小(2/3/4/5)
def text_cnn(maxlen=15, max_features=10000, embed_size=300):
# input layers
comment_seq = Input(shape=[maxlen], name='x_seq')
# Embeddings layers
emb_comment = Embedding(max_features, embed_size)(comment_seq)
# conv layers
convs = []
filter_sizes = [2, 3, 4, 5]
for fsz in filter_sizes:
l_conv = Conv1D(filters=100, kernel_size=fsz, activation='relu')(emb_comment)
l_pool = MaxPooling1D(maxlen - fsz + 1)(l_conv)
l_pool = Flatten()(l_pool)
convs.append(l_pool)
merge = concatenate(convs, axis=1)
# out = Dropout(0.1)(merge)
output = Dense(64, activation='relu')(merge)
output = Dense(units=1, activation='sigmoid')(output)
model = Model([comment_seq], output)
model.compile(loss="binary_crossentropy", optimizer=optimizers.RMSprop(lr=1e-4), metrics=['acc'])
return model
2、TextRNN
循環(huán)神經(jīng)網(wǎng)絡(luò)彌補卷積神經(jīng)網(wǎng)絡(luò)中卷積核大小固定,導(dǎo)致了卷積神經(jīng)網(wǎng)絡(luò)無法抽取到與當(dāng)前詞距離更長的詞信息表達苇侵。經(jīng)驗表明,循環(huán)神經(jīng)網(wǎng)絡(luò)更適于自然語言處理問題斤程,能夠更好表達文本或語句上下文信息。
輸入詞向量的最后一維對應(yīng)的輸出直接作為預(yù)測分類的基準(zhǔn)菩混,這樣設(shè)計的好處節(jié)省訓(xùn)練時間忿墅,同時也因為通過 LSTM 編碼的最后一層的隱藏層輸出已經(jīng)攜帶了前后所有序列的信息表達,因此效果尚佳墨吓。
3球匕、CRNN
CRNN 模型是基于 CNN 和 RNN 的拼接式神經(jīng)網(wǎng)絡(luò),其中 CNN 主要用于文本特征抽取帖烘,RNN 主要用于后續(xù)基于全局序列的情感分類亮曹。
def text_c_lstm(num_labels=1,maxlen=15, max_features=10000, embed_size=300):
model=Sequential()
model.add(Embedding(max_features, embed_size, input_length=maxlen))
model.add(Conv1D(256, 3, padding='same', strides=1))
model.add(Activation('relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(GRU(32, dropout=0.2, recurrent_dropout=0.1, return_sequences=True))
model.add(GRU(32, dropout=0.2, recurrent_dropout=0.1))
model.add(Dense(num_labels,activation='sigmoid'))
model.compile(loss="binary_crossentropy", optimizer=optimizers.RMSprop(lr=1e-4), metrics=['acc'])
return model
CRNN 結(jié)構(gòu)與編碼器-解碼器(Encoder-Decoder)結(jié)構(gòu)非常相似,用 CNN 的卷積 + relu + 池化操作作為編碼器秘症,其輸出作為解碼器 LSTM 的輸入照卦,最終仍然經(jīng)過 Softmax 得出最終概率值。
三乡摹、模型優(yōu)化與思考
- 訓(xùn)練時間方面役耕,標(biāo)準(zhǔn)化基于正態(tài)分布的平移和拉伸,其變換的目的在于把每個值向后續(xù)要進行的非線性變化區(qū)域靠近聪廉,從而使所有梯度值的計算不至于停留在飽和區(qū)域(梯度值接近于 0 )瞬痘,進而加快模型訓(xùn)練和收斂速度。
- 泛化能力方面板熊,考慮訓(xùn)練樣本的正負比例框全,及其樣本的多樣性以及正負樣本間打亂的程度
四、個性化輔導(dǎo)
*如果需要輔導(dǎo)干签,請私聊
如果需要輔導(dǎo)津辩,請私聊
如果需要輔導(dǎo),請私聊
四、參考資料
- 《美團機器學(xué)習(xí)實踐——評論挖掘》
- 《A C-LSTM Neural Network for Text Classification》
- 《Convolutional Neural Networks for Sentence Classification》