teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

一部修正

2021/09/26 02:01

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -6,4 +6,6 @@
6
6
 
7
7
  0. 質問者様がスケールをlogから修正する際に、底を2にしていますが、e(自然対数の底)を使うことが正しいです。
8
8
 
9
- なお、分類問題の出力を「確率」と解釈するのは注意したほうがよいです。正解ラベル(0または1)に近い推論ができるように学習されただけで、確率的な意味を持つものではありません。
9
+ なお、分類問題の出力を「確率」と解釈するのは注意したほうがよいです。正解ラベル(0または1)に近い推論ができるように学習されただけで、確率的な意味を持つものではありません。
10
+
11
+ (元記事を実際に動かしてみましたが、特に、1と3は、jbpb0様のコメントをヒントに、気が付きました)

5

間違った回答の修正

2021/09/26 02:01

投稿

toast-uz
toast-uz

スコア3266

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

4

一部修正

2021/09/26 01:52

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  **分類問題の出力は「確率」ではありません。**0や1といった分類正解ラベルに対して、学習や推論で正解ラベルに近い0〜1の値を出力するだけで、そこに「確率」という意味はありません。また、Softmaxは任意の実数を強制的に0〜1に連続的に変換するものです。
2
2
 
3
- 今回、質問者様が勘違いされているのは、出力を確率と勘違いされていることと、二値分類であるにも関わらず出力を2次元としていることです。クラス0とクラス1それぞれで、Softmaxの結果0〜1の推論値を得ているだけで、そこには確率という意味はありませんので、合計値が=1になる保証はありません。
3
+ 今回、質問者様が勘違いされているのは、出力を確率と解釈ししまっていることと、二値分類であるにも関わらず出力を2次元としていることです。クラス0とクラス1それぞれで、Softmaxの結果0〜1の推論値を得ているだけで、そこには確率という意味はありませんので、合計値が=1になる保証はありません。
4
4
 
5
5
  なお、あえて「確率もどき」な解釈をすると、クラス0だと機械学習が考える「確率もどき」と、クラス1だと機械学習が考える「確率もどき」は、互いに関連なく別々の判断である、ということです。すなわち、「クラス0か、と言われるとそのようにも感じるし、クラス1だとも思える・・・」みたいな判断結果もありえる、と解釈するとよいと思います。
6
6
 

3

一部修正

2021/09/25 23:29

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  今回、質問者様が勘違いされているのは、出力を確率と勘違いされていることと、二値分類であるにも関わらず出力を2次元としていることです。クラス0とクラス1それぞれで、Softmaxの結果0〜1の推論値を得ているだけで、そこには確率という意味はありませんので、合計値が=1になる保証はありません。
4
4
 
5
- 決法2つあります。
5
+ なお、あえて「確率もどき」な釈をすると、クラス0だと機械学習が考える「確率もどき」と、クラス1だと機械学習が考える「確率もどき」、互いに関連なく別々の判断でる、ということです。すなわち、「クラス0か、と言われるとそのようにも感じるし、クラス1だとも思える・・・」みたいな判断結果もあえる、と解釈するとよいと思います。
6
6
 
7
+ 解決法は3つあります。
8
+
7
9
  0. 確率という意味は考えず、出力の大きい方を正解と採用する。引用されているブログ筆者の考え方ですし、通常の多値分類の取り扱い方でもあります。
8
- 0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
10
+ 0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
11
+ 0. まったく意味はありませんが、モデルの最終層(Softmaxの次)でL1-normを1にするように正規化する、という方法もありえます。

2

一部修正

2021/09/25 23:24

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -4,5 +4,5 @@
4
4
 
5
5
  解決法は2つあります。
6
6
 
7
- 0. 確率という意味は考えず、出力の大きい方を正解と採用する引用されているブログ筆者の考え方
7
+ 0. 確率という意味は考えず、出力の大きい方を正解と採用する引用されているブログ筆者の考え方ですし、通常の多値分類の取り扱い方でもあります。
8
8
  0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。

1

一部修正

2021/09/25 23:15

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  今回、質問者様が勘違いされているのは、出力を確率と勘違いされていることと、二値分類であるにも関わらず出力を2次元としていることです。クラス0とクラス1それぞれで、Softmaxの結果0〜1の推論値を得ているだけで、そこには確率という意味はありませんので、合計値が=1になる保証はありません。
4
4
 
5
- 解決法は3つあります。
5
+ 解決法は2つあります。
6
6
 
7
7
  0. 確率という意味は考えず、出力の大きい方を正解と採用する(引用されているブログ筆者の考え方)
8
- 0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
8
+ 0. 二値分類の基本的なやり方に従い、出力は1次元として、どちらか片方、例えばクラス0側の「確率もどき」であると解釈する。その場合、クラス1の「確率もどき」は、1-出力 です。今回の結果に適用すると、正解率がかなり下がるかもしれませんが、それはモデルがよくないからです。
9
- 0. 多値分類を2次元に適用して、出力は2次元とするが、多値分類のロス関数であるBCELossを使う。BCELossは、各次元の合計を=1にするようにスケーリングしてくれるだけで、「確率」を求めるものではないことに注意してください。なお、PyTorchでは、Softmax層とBCELossを統合して、BCEWithLogitsLossを使うことを推奨されています。