回答編集履歴
6
一部修正
test
CHANGED
@@ -15,3 +15,7 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
なお、分類問題の出力を「確率」と解釈するのは注意したほうがよいです。正解ラベル(0または1)に近い推論ができるように学習されただけで、確率的な意味を持つものではありません。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
(元記事を実際に動かしてみましたが、特に、1と3は、jbpb0様のコメントをヒントに、気が付きました)
|
5
間違った回答の修正
test
CHANGED
@@ -1,21 +1,17 @@
|
|
1
|
-
|
1
|
+
3つ間違いがあります。2つは参照している記事の間違い、1つは質問者様の間違いです。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
0. 記事では、log_sofmaxをdim=0で適用していまが、dim=1が正しいです。こうすることで、多値分類の分類クラス方向に正規化がされた値になります。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
|
9
|
+
0. これは質問とは直接関係ありませんが、記事では予めデータの標準化がされていません。そのため、精度が悪くなってしまっています。標準化をしてから学習すれば、かなり精度があがります。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
0. 質問者様がスケールをlogから修正する際に、底を2にしていますが、e(自然対数の底)を使うことが正しいです。
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
|
17
|
+
なお、分類問題の出力を「確率」と解釈するのは注意したほうがよいです。正解ラベル(0または1)に近い推論ができるように学習されただけで、確率的な意味を持つものではありません。
|
18
|
-
|
19
|
-
0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
|
20
|
-
|
21
|
-
0. まったく意味はありませんが、モデルの最終層(Softmaxの次)でL1-normを1にするように正規化する、という方法もありえます。
|
4
一部修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
今回、質問者様が勘違いされているのは、出力を確率と
|
5
|
+
今回、質問者様が勘違いされているのは、出力を確率と解釈してしまっていることと、二値分類であるにも関わらず出力を2次元としていることです。クラス0とクラス1それぞれで、Softmaxの結果0〜1の推論値を得ているだけで、そこには確率という意味はありませんので、合計値が=1になる保証はありません。
|
6
6
|
|
7
7
|
|
8
8
|
|
3
一部修正
test
CHANGED
@@ -6,10 +6,16 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
なお、あえて「確率もどき」な解釈をすると、クラス0だと機械学習が考える「確率もどき」と、クラス1だと機械学習が考える「確率もどき」は、互いに関連なく別々の判断である、ということです。すなわち、「クラス0か、と言われるとそのようにも感じるし、クラス1だとも思える・・・」みたいな判断結果もありえる、と解釈するとよいと思います。
|
10
|
+
|
11
|
+
|
12
|
+
|
9
|
-
解決法は
|
13
|
+
解決法は3つあります。
|
10
14
|
|
11
15
|
|
12
16
|
|
13
17
|
0. 確率という意味は考えず、出力の大きい方を正解と採用する。引用されているブログ筆者の考え方ですし、通常の多値分類の取り扱い方でもあります。
|
14
18
|
|
15
19
|
0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
|
20
|
+
|
21
|
+
0. まったく意味はありませんが、モデルの最終層(Softmaxの次)でL1-normを1にするように正規化する、という方法もありえます。
|
2
一部修正
test
CHANGED
@@ -10,6 +10,6 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
0. 確率という意味は考えず、出力の大きい方を正解と採用する
|
13
|
+
0. 確率という意味は考えず、出力の大きい方を正解と採用する。引用されているブログ筆者の考え方ですし、通常の多値分類の取り扱い方でもあります。
|
14
14
|
|
15
15
|
0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
|
1
一部修正
test
CHANGED
@@ -6,12 +6,10 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
解決法は
|
9
|
+
解決法は2つあります。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
13
|
0. 確率という意味は考えず、出力の大きい方を正解と採用する(引用されているブログ筆者の考え方)
|
14
14
|
|
15
15
|
0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
|
16
|
-
|
17
|
-
0. 多値分類を2次元に適用して、出力は2次元とするが、多値分類のロス関数であるBCELossを使う。BCELossは、各次元の合計を=1にするようにスケーリングしてくれるだけで、「確率」を求めるものではないことに注意してください。なお、PyTorchでは、Softmax層とBCELossを統合して、BCEWithLogitsLossを使うことを推奨されています。
|