バイナリでエンコードしても問題ありません。しかし、タスクやモデルに応じて別のレイヤー(またはフィルター)を追加する必要があるかもしれません。あなたのエンコーディングがバイナリ表現のために無効な共有機能を意味するようになりました。例えば
、入力のためのバイナリエンコーディング(x = [x1, x2]
):
'apple' = [0, 0]
'orange' = [0, 1]
'table' = [1, 0]
'chair' = [1, 1]
そのorange
とchair
共有同じ機能x2
を意味します。今、二つのクラスy
の予測で:ラベル付きデータサンプルのため
'fruit' = 0
'furniture' = 1
と線形最適化モデル(W = [w1, w2]
とバイアスb
):あなたが肯定を得るfurniture
として
(argmin W) Loss = y - (w1 * x1 + w2 * x2 + b)
あなたはchair
ためw2
重みを更新するたびにこのクラスに対してもorange
を選択することの改善。あなたが他の層U = [u1, u2]
を追加する場合は、この特定のケースでは、あなたはおそらくそれを解決することができます:
(argmin U,W) Loss = y - (u1 * (w1 * x1 + w2 * x2 + b) +
u2 * (w1 * x1 + w2 * x2 + b) +
b2)
[OK]を、ワンホットエンコーディングを使用することによって、このミス表現を避けられない理由。 :)
有効な最適化である場合、これらのビットを見つけるためにハフマンコーディングを使用することもできます。この場合、softmaxが機能しないなど、最適化の目的を変更する必要があるかもしれないことに注意してください。 –
これは整数を使用する場合とほとんど同じです( "ビット10とビット01"のものは "00"または "11"のいずれかで高い確率で結果が得られるので、 ) – lejlot