Pol.isのアルゴリズムを読む(マッピングまわり)
blu3mo.iconさんが天才言うてて、(でも俺だとここ見ただけでは何もわからない感じだったので詳しく)中身見たさ
まとめ
まずはこうするやろ?
table:a
コメント1 コメント2 コメント3 ……
参加者1 v
参加者2 v v
参加者3 v v
……
で、次に次元削減ってのを使ってこうするんや
table:a
観点1 観点2
参加者1
参加者2
参加者3
……
二次元になる
二次元空間上にマッピングできるようになる
この「コメントがn種類ある(n次元ある)」のをなんとかしてn=2にまで圧縮するのが次元削減
どういう観点を持ち出したら上手いこといけるかってのを頑張ってごにょごにょして?計算するんよ
なるほど、たしかに天才やわsta.icon
そもそもの目的は「大体の傾向を可視化したい」
でもコメント(言葉)なんて無限通りあるし無理ゲーやろ
そんなとき、普通は自然言語で同じっぽいのグルーピングしようと考える(sta.iconもそう考える)
でもそうじゃなくて、上記のように行列的に配置した上で「次元削減」に持ち込んだわけか
この辺のアルゴリズムさっぱりだから全然イメージ湧かないんだけど、機械学習で?使ってる?世界のアルゴリズムがなんか使えるってことなんよな?
ふー、ガチれば大雑把な理解でも1hかかるなsta.icon
(たぶん英語読めて数学的知識あれば1-2分で終わる)
-.icon
2
次元削減?をするのにPCAとUMAPってのを使ってるらしい
deepl
次元削減の説明 👾 アルゴリズム。
高次元空間とは?
初心者のための次元削減ガイド
視覚的に説明する主成分分析
回帰のための物理学的直観 バネとしてのPCA
高次元空間
要するにリンクをn個出せば(同じ性質に指してない限り)n次元になるって話
好きな食べ物、好きな飲み物、好きな性癖、好きな音楽
これだけでもう4次元になるsta.icon
機械学習使うときは、リンク各々を数字化する
数字化するってことは一次元?二次元?になる
「こいつとこいつは近い」みたいなのが描画できるようになる
動画ではなんか0.xxxxみたいな数字になってたけどsta.icon
wordsの例も出してる
200次元あるらしい
t-SNE?みたいなアルゴリズム?使ったら「pianoとオーボエ」が同じ場所に配置される……みたいな描画ができるらしい
OCRの例も出してる
0-9の手書きを720pixel空間にマッピングして、上記を使えば、0-9 10個のクラスタが集まるみたいな描画できるらしい
次元削減ガイド
https://gyazo.com/6087456bd7734d40d207434f3c7af018
t-SNEも次元削減アルゴリズムなわけか
deepl 本文とその解釈
この手法は、文書の分類、タンパク質の障害予測、機械学習モデルのデバッグなど、多くの領域で有用である
低次元に埋め込むからembedding
そこで、データを直接視覚化できる低次元に投影することができる。このような投影をエンベッディングと呼びます。
1次元化するには各要素を数字化する。数直線に配置できる。
1次元のエンベッディングを計算するには、各アートワークを1つずつ取り出して、それを記述するための数値を計算する必要があります。1次元化することのメリットは、数値と作品を1本の線上に並べることができることです。
たとえば画像のピクセル鮮度を使えば、暗い画像と明るい画像を分類できる
3次元 to 2次元
よーわからんけど行列に変換して、それをごにょごにょしたら次元を減らせるらしいよsta.icon
典型的にはこう
table:t
m \ n 特徴1 特徴2 ……
データポイント1
データポイント2
……
特徴の方を1-3にまで圧縮するらしい
2次元に圧縮したら特徴を2つ使えるので、マトリックス的な配置が可能になる
前節では、各特徴の正確な影響力が分かっている、ユーザー主導の埋め込みの例を示しました。しかし、特徴の重みの意味のある組み合わせを見つけるのは難しいことにお気づきでしょうか。
ピンとこない
上記の例ではsuch as its title, artist, date made, medium, and dimensions.
あとは画像なので画像の明るさとかも使える
特徴がはっきりしていた
が、実世界ではそうではない?sta.icon
で、ようやくpcaとかの話だが「特徴の最適な組み合わせ」を見つけるアルゴリズムらしい
この辺から概要説明でも意味不明になってくるwsta.icon
主成分分析(PCA)のような単純なアルゴリズムは,データの分散を最大化し,最適な埋め込みを生成する.より複雑なアルゴリズムであるt-distributed stochastic neighbor embedding (t-SNE)は、高度にクラスター化した埋め込みを繰り返し生成する。
train.icon分散ってなんだっけ?レベルのsta.iconには時期尚早 大学で勉強したけど何回やってもピンとこなくて早くテスト終わって欲しい思ってた覚えがあるわ
が、経緯から理解したら5分でわかったわ。さすがscrapboxsta.icon
deepl
pca
主成分分析
長所
比較的計算量が少ない。
埋め込みモデルを保存し、新しいデータ点を縮小空間に投影することができる。
短所
線形化により、取得できる情報が制限される。
t-sne
t-分散確率的近傍埋込み法
長所
高度にクラスタ化され、視覚的に印象的な埋め込みができる。
非線型化により、局所的な構造をよく捉えることができる。
欠点
局所的な距離の保存を優先するため、全体的な構造が失われる可能性がある。
計算コストが高い。
埋め込み品質に影響を与えるハイパーパラメータを設定する必要がある。
非決定論的アルゴリズム。
umap
一様多様体近似と射影
長所
t-SNE よりも高速に計算できる非線形削減。
局所構造または大域構造を保存するためのパラメータをユーザが定義可能。
多様体学習における確かな理論的基礎。
短所
新しい、あまり普及していないアルゴリズム。
埋め込みの質に影響するハイパーパラメータの設定が必要。
-.icon
1
はじめにこれを読めとのこと
deeplさん
エクセルの表で考えてみましょう
コメントは列で、各列は参加者によって提出されたステートメントを表します。
参加者は行であり、各行は参加者の投票記録である。
したがって、Excelシートはコメントに対する参加者の投票で埋め尽くされます。
結果として得られる疎な行列とメタデータは、エクスポートで利用可能です。
行列がまばらと言われるのは、完全ではない(可能性が高い)ためで、つまり、ほとんどの参加者はほとんどのコメントに対して投票しないでしょう。
アルゴリズムと👾解析はマトリックス上で実行されます。
クラスタリングには自然言語処理は含まれない
table:a
コメント1 コメント2 コメント3
参加者1 v
参加者2 v v
参加者3 v v
こういうテーブルに帰着できるってことね
単位
conversation
prompt
topic(タイトル)
description(詳細)
なんかtopicも略せるとあるけど略したらuntitledにならねえ?sta.icon
comments
comment(state=approved)
comment(state=rejected)
comment(state=approved)
comment(state=) 承認も否認もされてないコメントってありえる?sta.icon
……
comment
deeplさん
1つの会話に投稿された140文字未満のプレーンテキスト文(それぞれコメント)のセット全体
または、1人の参加者が1つの会話に投稿したコメントのセット。
コメントには、👹モデレーションプロセスが承認したコメントと拒否したコメントが含まれます。
コメントは、「参加者が投票するコメント」の略語として使われることもあり、👹モデレーションプロセスによって承認されたコメントを意味します。
コメントルーティングは、例えば、会話にモデレートされたすべてのコメントに対して行われます。
conversation
deepl
会話は、Polisにおける考察の基本単位です。トピックまたはプロンプト、オプションの説明、埋め込みコードとURL、および設定オプションで構成されています。Polisカンバセーションのデータを生成します。
会話では、オーナーはトピックまたはプロンプトを設定することから始めます。
prompt
deepl
プロンプト
会話トピック(プロンプト)は、参加者に会話の内容を伝え、参加者が提出すべきコメントのフレーム、範囲、トーンを設定します。
プロンプトは、「トピック」と「説明」の2つのフィールドから構成されています。
トピック]には、参加者にコメントで回答してもらいたい質問を簡単に要約します。
説明には、トピックを拡大し、例を挙げ、記事にリンクし、特定の質問をし、またはトピックから外れているものについて言及します。
注:これらはいずれも任意項目です。会話のトピックを別の場所(特に会話を埋め込んでいる場合)やPolisの会話とは別のページで説明することにしてもよいでしょう。
ベストプラクティス
オープンエンドの会話が良い - トピックが小さすぎると、結果が面白くありません。例
"あなたの経験は?どうしたらもっと良くなる?"
"何を始め、何を止め、何を続けるべきか?" しかし、トピックは、興味深い結果を生むのに十分な大きさでありながら、かなり具体的であることも可能です。例えば
「今後50年間、どのように生物多様性を保護し、回復させるべきか?
Polisは多様な意見がある論争的な問題に最適です - トピックに対して可能な視点が少なければ、おそらく結果はあまり面白くありません。短い文章にする - Polisは参加者がすぐに発言に飛びつき、投票できるように設計されています。トピックに関する長い説明は、おそらく参加者に読まれないでしょうし、さらに悪いことに、参加する可能性を低くしてしまうでしょう。参加する前に、より多くの情報を含める必要がある場合は、Polisのリンクを配布するためのメールや、アンケートが組み込まれたウェブサイトなど、他のチャンネルを使用してください。
www.DeepL.com/Translator(無料版)で翻訳しました。
comment routing
deepl
コメントのルーティング
Polisは一度に1つのコメントを表示します。コメントルーティングのプロセスは、どのコメントがサーバーと数学モジュールによって半ランダムに選ばれ、次に参加者に参加インターフェースに表示されるかを決定します。
これは、システムがすでに知っていることに過剰に適合しないことを保証しながら、システムをより適応的にすることでスケーリングするのに役立ちます(Wikisurveyを参照)。
直観
わかりやすく言うと、コメントは以下の基準で優先順位がつけられます。
参加者がどのような意見を持っているか、どの程度予測可能か
コンセンサスを得る可能性が高いか
会話に対してどれだけ新しいか(確立された会話に新しいコメントが「バブルアップ」することを可能にするため)、それによってコメントが減衰する(Hacker Newsが時間の要素を含む投稿位置の「重力」の概念と似て非なるものです)
コメントがスルーされる頻度 (不明瞭な言い回し、無関係、焦点のずれを示唆) 専門家の意見も専門用語を使用しているためスルーされやすいかどうかについては、活発な議論が行われています。
数学的に言えば
重みは決定論的である。参照してください。代表的なコメント
www.DeepL.com/Translator(無料版)で翻訳しました。
代表的なコメントの計算方法
「グループ参加者が高確率で投票するコメント」を示すわけかsta.icon
んー、数式はよくわかんね
polis内に現存するすべてのグループを扱おうとしてる?
g1と「g1の補集合」があるけどさ、たとえばグループ数がシステム内で10万あったら、10万全部計算してんの?
いや、グループってサブセットのことか
いや、だとしてもえぐくね?会話sにコメントが100件あったら、O(2^100)にならん?サブセットだし。無理じゃね?
うん、わかんね。俺には時期尚早sta.icon*2
deepl
あるコメントcと会話のサブセット(グループ)gについて、グループgに対するそのコメントcの代表性(Rv(g,c)と表記)は、グループgの参加者がグループg外の参加者に比べてそのコメントに投票vを置く確率がどれだけ高いかを示す指標となります。
以下、Representativenessの計算方法について説明します。
まず、あるグループgに属する人が、コメントcにvを投票する確率を次のように推定します。Pv(g,c)=2+N(g,c)1+Nv(g,c). ここで
Na(g,c)は、コメントcにv(賛成or反対or合格)を投票したグループgの人の数
N(g,c)は、コメントcに全く投票しないグループgの人の数です。
上記の分数の分子と分母に加えられる1と2の値はpsuedocountsであり,Frequentist統計におけるsemi-naive事前分布として用いられる。
次にRv(g,c)=Pv(gˉ,c)Pv(g,c) を計算する。
ここで、gˉはgの補集合、つまり、グループgのメンバーでない会話の参加者全員である。
選択基準は少し難しいですが、これは2特性検定(基本的にはフィッシャー検定)を見て、これにRepresentativenessを掛け、推定効果量と信頼度の両方を反映したマッシュアップ数を得るというものです。
www.DeepL.com/Translator(無料版)で翻訳しました。