このページは,distill-pub の How to Use t-SNE Effectively の翻訳です。 すぐれた記事とアプリケーションを開発した著者に敬意を表します。
高次元データを探索するための一般的な手法として t-SNE があります。t-SNEは
(訳注: 下の図をクリックすると t-SNE の時間発展を見ることができます)
t-SNE が表示可能なことと,できないことを説明するために,一連の簡単な例を見ていきます。 t-SNE の技法は本当に便利です。ですが t-SNE を解釈する方法を知っている場合に限られます。
詳細に入る前に t-SNE について初見の場合には,t-SNE の背景となっている数学について知っておく必要があることを説明します。 ここでの目標は,高次元空間の点の集合を取り上げ,低次元空間,通常は 2 次元平面で 高次元空間上の点の忠実な表現を探し出すことです。 このアルゴリズムは非線形で,基礎となるデータに適応して,異なる領域で異なる変換を実行します。 このような領域ごとの違いは,混乱の主な原因となります。
t-SNE の 2 番目の特徴は,調整可能なパラメータ 「錯綜度」パープレキシティ perplexity です。 パープレキシティはデータの局所的な側面と 大域的な側面の間で 注目点をどのようにバランスさせるかを (ゆるく) 記述するパラメータです。 このパラメータは ある意味では 各点が持っている 近隣の人の数についての推測値です。 錯綜度の値は 結果として得られる画像に複雑な影響を与えます。 元論文によれば 「 t-SNE のパフォーマンスは錯綜度 perplexity の変化にかなりロバストで,典型的な値は 5 から 50 の間である」 となっています。 しかし,錯綜度の選択についてはそれ以上の含意があります。 t-SNE を最大限に活用するためには 異なる錯綜度 perplexity で複数のプロットを分析することを意味するかもしれません。
複雑なのは錯綜度 (パープレキシティ) だけではありません。 たとえば t-SNE アルゴリズム は 何度か実行した場合に,常に同じような出力を生成するわけではありません。 最適化プロセスに関連した追加のハイパーパラメータが存在します。
t-SNE の "hello world" から始めましょう。 広く分離したている 2 つのクラスタのデータセットです。 物事をできるだけ簡単するために,左図に示すように 二次元平面上のクラスタを考えます わかりやすくするために、2 つのクラスタを色分しています。 下図は 5 つの異なる錯綜度値 の t-SNE プロットを示しています。
van der Maaten & Hinton が提案した 範囲 (5-50) の錯綜度 (パープレキシティ) 値では,非常に異なる形状ではありますが,図ではこれらのクラスターを示しています。 その範囲外では,少し奇妙なことになります。 錯綜度 2 では,局所的な変動が支配的です。 クラスターがマージされている場合の錯綜度値 100 の図では 落とし穴を示しています。 アルゴリズムが特性を動作させるために,錯綜度は実際には点の数よりも小さくなければなりません。 そうでなければ,プログラムは予期しない動作をする可能性があります。
上図は 学習率 (イプシロンと呼ばれる) が 10 で,5,000 回の反復で作成されました。 5,000 回目のステップで安定した点に達しています。 これらの値はどのくらいの違いがあるのでしょうか? 私たちの経験では、最も重要なことは、安定した構成に到達するまで反復することです。
上図は,錯綜度値 30 での 5 つの異なる実行を示しています。 最初の 4 つは安定する前に停止しています。 10, 20, 60, 120 ステップ後に,クラスターの 1 次元的で点状のイメージを持つレイアウトが見られます。 もし,あなたが奇妙な "挟まれた" 形の t-SNE プロットを得た場合には,可能性としては,処理をあまりにも早く停止してしまったことになります。 残念ながら,安定した結果が得られる定まったテップ数はありません。 異なるデータセットであれば,収束するために異なる反復回数を必要とすることがあります。
もう一つの自然な疑問は,同じハイパーパラメータでプログラムを実行をして,同じ結果が得られるかどうかということです。 この単純な 2 つのクラスタの例や,私たちが議論する他のほとんどの例では,複数回の実行で同じ帯域的形状が得られます。 しかし、特定のデータセットでは,異なるプログラムの実行により,著しく異なる布置が得られることがあります。
以下では,特に断りのない限り,5,000 回の繰り返しの結果を示します。 この小論の中の (比較的小さな) 例では,一般的にはこれで十分収束しています。 ですが,すべてのケースで大きな違いがあるように思われるので、さまざまなな錯綜度を示し続けます。
pここまではいい感じです。 しかし 2 つのクラスタが異なる標準偏差を持っている場合はどうでしょうか? サイズによっては、ポイント数ではなく,バウンディングボックスの測定をしています。 下図は 平面内のガウシアンの混合物の t-SNE プロットです。一方が他方の10倍の分散です。
驚くべきことに,2 つのクラスターは t-SNE プロットではほぼ同じ大きさに見えます。 何が起こっているのでしょうか? t-SNE アルゴリズムは その「距離」の概念をデータセットの地域的な密度の変化に適応させます。 その結果,密集したクラスターは自然に拡大し,疎なクラスターは縮小して,クラスターの大きさが均等になります。 これは、次元削減技術が距離を歪めるという良くある事実とは異なる効果であることは明らかです。 結局のところ、この例では、すべてのデータはそもそも 2 次元です。 むしろ、密度の均等化は t-SNE の設計上の問題であり t-SNE の予測可能な特徴なのです。
しかし,結局のところ,t-SNE プロットではクラスタの相対的な大きさを見ることはできません。
クラスター間の距離はどうでしょう? 下図は,それぞれ 50 点ずつの 3 つのガウシアンを示しています。1 つのペアは 他のペアの 5倍 の距離にあります。
錯綜度値 50 では,図は大域的な幾何学的形状をよく表しています。 錯綜度値が低い場合,クラスターは等距離に見えます。 錯綜度値が 100 の場合,大域的な幾何学的形状は良好に見えます。ですが,クラスターの 1 つが他のクラスターよりもはるかに小さく見えます。 この例では錯綜度値 50 で良い画像が得られました。ですが,大域的な形状を見たい場合は,常に錯綜度値を 50 に設定して良いのでしょうか?
悲しいかな違います。 各クラスターにもっと多くの点を追加すると,その分だけ錯綜度が増してしまいます。 以下は 50 点ではなく,各 200 点の正規分布クラスタの t-SNE 図です。 どの錯誤値での試行も良い結果を与えません。
大域的な形状を見るには微調整の複雑さが必要だというのは悪いニュースです。 現実のデータでは 要素数の異なる複数のクラスタが存在するでしょう。 すべてのクラスタ間の距離を把握できるような錯綜度値はないかもしれません。 この問題を解決することは、今後の研究のための興味深い分野かもしれません。
基本メッセージとしては t-SNE プロットにおける十分に分離されたクラスタ間の距離は何の意味もないかもしれないということです。
古典的な落とし穴としては,実際にはただのランダムなデータの中にパターンがあると思ってしまうことです。 あなたがそのパターンを見出した場合に,そのパターンをノイズであると認識することは重要なスキルです。 ですが,正しい直感を構築するためには時間がかかります。 t-SNE の厄介な点は,既存の直感の多くを窓外に投げ出すことです。 下図は,100 次元の 単位ガウス分布から導出した 500点 の純粋にランダムなデータを示しています。 左の画像は、最初の 2 つの座標への投影です。
錯乱度 2 のプロットは、劇的なクラスターを示しているように見えます。 もしあなたがデータの構造を引き出すために、錯綜度値を調整していたとしたら、大当たりだと思うかもしれません。
もちろん 点の雲がランダムに生成されたことがわかっているので、統計的に興味深いクラスターはありません。 以前の例を振り返ってみると、低錯綜度はしばしばこのような分布になります。 これらの塊をランダムノイズとして認識することは、t-SNE プロットを読むための重要な部分です。
しかし 他にも興味深いことがあります。 錯綜度値 30 のプロットは 最初はガウス分布のようには全く見えません。 雲の異なる領域間でわずかな密度差があるだけで,ポイントは疑わしいほどに均等に分布しているように見えます。 実際,これらの特徴は,高次元正規分布について有用なことを言っています。 このような観点から見ると、t-SNE プロットは、任意の線形写像よりも正確です。
データが完全に対称的に分布していることは稀です。 座標 i の標準偏差が 1/i である 50 次元の軸に沿ったガウス分布を見てみましょう。 つまり、楕円球状の雲を見てみます。
十分に高い錯綜度値では 細長い形状が現れやすくなります。一方 低い錯綜度値では 局所的な効果と無意味な「固まり」が中心的になります。 より極端な形状も見られますが、これもまた右の錯綜度の場合のみです。 たとえば、ここでは 2 次元で 75 点ずつの 2 つのクラスターがあり 少しのノイズを含んだ平行線上に配置されています。
ある種の複雑さの範囲では,長いクラスターは正しいものに近いように見えます。 これは心強いです。
しかし 最良のケースでも 微妙な歪みがあります。t-SNE のプロットでは 線がわずかに外側に湾曲しています。 その理由は,いつものように,t-SNE はデータの密度の高い領域を拡大する傾向があるからです。 クラスターの中間部は端部よりも周りの空所が少ないので,t-SNE アルゴリズムはそれを拡大します。
t-SNE プロットからトポロジカル情報を読み取ることができる場合もあります。ですが,通常は複数の錯綜度(パープレキシティ)で観察する必要があります。 最も単純なトポロジカル特性は,封じ込めです。 下図は 50 次元空間内の 75 点の 2 つのグループ を示しています。 両方とも原点を中心とした対称ガウス分布からサンプリングされています。 一方は他方よりも50 倍も密に分布しています。 小さい分布は事実上大きい方の分布に含まれています。
錯綜度 30 の図では基本的なトポロジーが正しく表示されています。ですが ここでも t-SNE は点の小さなグループの大きさを大きく誇張しています。 錯乱度 50 の図では 新しい現象が起きています。外側のグループは円になり,そのすべての点が内側のグループからほぼ同じ距離にあるという事実をプロットで表現しようとします。 この画像だけを見ると,これらの外側の点を一次元の構造物と見間違えることは容易でしょう。
より複雑なタイプのトポロジーはどうでしょうか? これは数学者にとっては実用的なデータ解析者よりも親しみのあるテーマかもしれませんが,興味深い低次元構造が野生の中で発見されることがあります。
リンクや結び目を 3 次元でなぞる点の集合を考えてみましょう。 繰り返しになりますが,複数の錯綜度の値を見ることで,最も完全な画像を得ることができます。 錯綜度の値が低いと 2 つの完全に独立したループが発生し,錯綜度が高いとグローバルな接続性のようなものが発生します。
トレフォイル結び目は 複数回 の実行で t-SNE の結果にどのように影響するかを示す興味深い例です。以下は パープレキシティ-2 の 5 つの実行例です。
このアルゴリズムは、少なくとも本質的なトポロジーを維持する円に2回落ち着きます。 しかし、3 回の実行では、人為的なブレークを導入した 3 つの異なる解で終わっています。 ドットの色を目安にすると、最初と 3 回目の実行はお互いに離れていることがわかります。
しかし 錯綜度 50 で 5 回実行すると (対称性までは)視覚的には同じ結果が得られます。明らかに最適化するのが簡単な問題もあります。
t-SNE がこれほどまでに人気を博しているのには理由があります。 それは、信じられないほど柔軟で,他の次元削減アルゴリズムでは不可能な構造を見つけることができるからです。 残念なことに,その柔軟性の高さが解釈を難しくしています。 ユーザーの目に触れないところで,アルゴリズムはあらゆる種類の調整を行い,可視化を整頓します。 しかし,隠れた「魔法」におびえて技術全体から遠ざかってはいけません。 t-SNE が単純なケースでどのように振る舞うかを研究することで,何が起こっているのかの直感を養うことが可能になるでしょう。
We are grateful to Chris Olah and Shan Carter for creating this platform, and for excellent design and editorial help from Shan Carter. Daniel Smilkov, James Wexler, and Chi Zeng provided many helpful comments. We also thank Andrej Karpathy for creating the tsnejs library used in the interactive diagrams.
This work was made possible by the support of the Google Brain team.
Edited on Oct. 18, 2016 to describe and correct issues when perplexity is defined to be larger than the number of points. Thanks to Laurens van der Maaten for pointing this out.
View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.
Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.
For attribution in academic contexts, please cite this work as
Wattenberg, et al., "How to Use t-SNE Effectively", Distill, 2016. http://doi.org/10.23915/distill.00002
BibTeX citation
@article{wattenberg2016how, author = {Wattenberg, Martin and Viégas, Fernanda and Johnson, Ian}, title = {How to Use t-SNE Effectively}, journal = {Distill}, year = {2016}, url = {http://distill.pub/2016/misread-tsne}, doi = {10.23915/distill.00002} }