第8章: ニューラルネット
第6章で取り組んだニュース記事のカテゴリ分類を題材として,ニューラルネットワークでカテゴリ分類モデルを実装する.なお,この章ではPyTorch, TensorFlow, Chainerなどの機械学習プラットフォームを活用せよ.
70. 単語ベクトルの和による特徴量
問題50で構築した学習データ,検証データ,評価データを行列・ベクトルに変換したい.例えば,学習データについて,すべての事例
xiの特徴ベクトル
xiを並べた行列
Xと,正解ラベルを並べた行列(ベクトル)
Yを作成したい.
X=x1x2⋯xn∈Rn×d,Y=y1y2⋯yn∈Nn
ここで,
nは学習データの事例数であり,
xi∈Rdと
yi∈Nはそれぞれ,
i∈{1,…,n}番目の事例の特徴量ベクトルと正解ラベルを表す. なお,今回は「ビジネス」「科学技術」「エンターテイメント」「健康」の4カテゴリ分類である.
N<4で4未満の自然数(0を含む)を表すことにすれば,任意の事例の正解ラベル
yiは
yi∈N<4で表現できる. 以降では,ラベルの種類数を
Lで表す(今回の分類タスクでは
L=4である).
i番目の事例の特徴ベクトル
xiは,次式で求める.
xi=Ti1t=1∑Tiemb(wi,t)
ここで,
i番目の事例は
Ti個の(記事見出しの)単語列
(wi,1,wi,2,…,wi,Ti)から構成され,
emb(w)∈Rdは単語
wに対応する単語ベクトル(次元数は
d)である.すなわち,
i番目の事例の記事見出しを,その見出しに含まれる単語のベクトルの平均で表現したものが
xiである.今回は単語ベクトルとして,問題60でダウンロードしたものを用いればよい.300次元の単語ベクトルを用いたので,
d=300である.
i番目の事例のラベル
yiは,次のように定義する.
yi=⎩⎨⎧0123 (記事 xi が「ビジネス」カテゴリの場合) (記事 xi が「科学技術」カテゴリの場合) (記事 xi が 「エンターテイメント」カテゴリの場合) ( 記事 xi が「健康」カテゴリの場合 )
なお,カテゴリ名とラベルの番号が一対一で対応付いていれば,上式の通りの対応付けでなくてもよい.
以上の仕様に基づき,以下の行列・ベクトルを作成し,ファイルに保存せよ.
- 学習データの特徴量行列: Xtrain∈RNt×d
- 学習データのラベルベクトル: Ytrain∈NNt
- 検証データの特徴量行列: Xvalid∈RNv×d
- 検証データのラベルベクトル: Yvalid∈NNv
- 評価データの特徴量行列: Xtest∈RNe×d
- 評価データのラベルベクトル: Ytest∈NNe
なお,
Nt,
Nv,
Neはそれぞれ,学習データの事例数,検証データの事例数,評価データの事例数である