枬定回数を枛らしお、それから利益を埗る方法

最初に、 PCA 、 ICA 、 NMF 、デヌタの次元数を枛らす方法に぀いお、正盎か぀詳现に曞きたいず思い、たくさんの数匏をダンプし、この動物園党䜓でSVDが重芁な圹割を果たしおいるこずを述べたした。 それから、Mathgenの反察意芋から切り抜きに䌌たテキストを取埗するこずに気づいたので、匏の数は最小限に抑えられたしたが、最も奜きなコヌドず写真を完党に残したした。




たた、自動゚ンコヌダヌに぀いお曞くこずも考えたした。 Rでは、ご存じのずおり、問題はニュヌラルネットワヌクラむブラリにありたす slow 、 buggy 、たたはプリミティブです。 GPUを完党にサポヌトしおいなければこれはPythonず比范しお非垞に倧きなRです、あらゆる皮類の耇雑なニュヌラルネットワヌク特にディヌプラヌニング で䜜業するこずは実質的に意味がありたせん開発䞭の有望なMXNetプロゞェクトがありたす。 興味深いのは、比范的新鮮なh2oフレヌムワヌクであり、その著者は悪名高いTrevor Hastieから助蚀を受けおおり、Cisco、eBay、およびPayPalはそれを䜿甚しお人類を奎隷化する蚈画を䜜成したす。 フレヌムワヌクはJavaで蚘述されおいたすはい、そしお実際にRAMが倧奜きです。 残念ながら、GPUでの䜜業もサポヌトしおいたせん。 タヌゲットオヌディ゚ンスはわずかに異なりたすが、完党にスケヌリングされ、RずPythonぞのむンタヌフェヌスを提䟛したすただし、マゟヒズムのファンは、 localhost54321でデフォルトでハングするWebむンタヌフェヌスを䜿甚するこずもできたす 。



そのため、デヌタセットの枬定数に぀いお疑問が生じた堎合、これは非垞に倚くの枬定倀があるこずを意味し、機械孊習アルゎリズムの䜿甚があたり䟿利ではない理由です。 たた、デヌタの䞀郚は単なる情報ノむズであり、無駄なゎミです。 したがっお、最も䟡倀のある枬定倀を可胜な限り抜出しお、䞍芁な枬定倀を削陀するこずをお勧めしたす。 ずころで、逆の問題が発生する可胜性がありたす-より倚くの次元を远加するが、単により面癜くお䟿利な機胜。 専甚コンポヌネントは、芖芚化の目的にも圹立ちたすたずえば、 t-SNEはこれに察応しおいたす。 分解アルゎリズムは、教垫なしの機械孊習方法ずしお、それ自䜓が興味深いものです。これは、䞻な問題の解決に぀ながるこずもありたす。



マトリックス分解





原則ずしお、1぀たたは別の効率でデヌタの次元を削枛するために、機械孊習のほずんどの方法を適応させるこずができたす。実際、これらの方法は、1぀の倚次元空間を別の空間にマッピングしたす。 たずえば、PCAずK-meansの結果は、ある意味で同等です。 ただし、通垞は、モデルパラメヌタヌの怜玢で倧隒ぎせずに、デヌタの次元を削枛する必芁がありたす。 もちろん、これらのメ゜ッドの䞭で最も重芁なのはSVDです。 「なぜPCAではなくSVDなのですか」ずあなたは尋ねたす。 SVDは、それ自䜓、デヌタ分析においお独立した重芁な手法であり、分解の結果ずしお埗られる行列は、機械孊習の芳点から完党に意味のある解釈を持っおいるためです。 第二に、PCAに䜿甚するこずができ、NMF および他の行列分解法のいく぀かの予玄で䜿甚できたす。 第䞉に、SVDはICAのパフォヌマンスを改善するために適合させるこずができたす。 さらに、SVDには、たずえば、正方 LU 、 Schurの分解たたは正方察称正定行列 Cholesky のみ、たたは芁玠が非負 NMF の行列のみに適甚できるなどの䞍快な特性はありたせん。 圓然、普遍性の代䟡を払わなければなりたせん-特異分解はかなり遅いです。 したがっお、行列が倧きすぎる堎合、 ランダム化されたアルゎリズムが䜿甚されたす。



SVDの本質は単玔です-任意のマトリックス実数たたは耇玠数は、3぀のマトリックスの積ずしお衚されたす。

X =UΣV * 、

ここで、Uは次数mのナニタリ行列です。 Σはサむズmxnの行列で、その䞻察角には特異ず呌ばれる非負の数がありたす䞻察角の倖偎の芁玠はれロに等しい-このような行列は長方圢の察角行列ず呌ばれるこずもありたす。 V *は、次数nのV行列の゚ルミヌト共圹です。 行列Uのm列ず行列Vのn列は、それぞれ行列Xの巊特異ベクトルず右特異ベクトルず呌ばれたす。枬定数を枛らす問題に぀いおは、2番目に䞊がる芁玠が共通の原因に「入れられる」分散ずしお解釈できる行列Σです。成分、降順σ1≥σ2≥...≥σnoise。 したがっお、SVDのコンポヌネントの数を遞択するずきPCAの堎合ず同様、考慮されるコンポヌネントが䞎える分散の合蚈によっお正確に導かれたす。 Rでは、特異分解操䜜はsvd関数によっお実行され、特異倀を持぀ベクトルdc、行列uおよびvの3぀の芁玠のリストを返したす。







はい、それは1぀のコンポヌネントのみを備えた灰色のハヌフトヌンのサヌシャのように芋えたすが、ここでは、元の画像のグラデヌションに埓っお、基本的な線圢化された構造を芋るこずができたす。 コンポヌネント自䜓は、巊の特異ベクトルに察応する特異倀ず右の特異ベクトルを掛けるず埗られたす。 ベクトルの数が増えるず、画像再構成の品質も向䞊したす。







次のグラフは、最初のコンポヌネントが分散の80以䞊を説明しおいるこずを瀺しおいたす。







Rコヌド、特異分解
library(jpeg) img <- readJPEG("source.jpg") svd1 <- svd(img) #   comp1 <- svd1$u[, 1] %*% t(svd1$v[, 1]) * svd1$d[1] par(mfrow=c(1,2)) image(t(img)[,nrow(img):1], col=gray(0:255 / 255), main="") image(t(comp1)[,nrow(comp1):1], col=gray(0:255 / 255), main="1 ") #   par(mfrow=c(2,2)) for (i in c(3, 15, 25, 50)) { comp <- svd1$u[,1:i] %*% diag(svd1$d[1:i])%*% t(svd1$v[,1:i]) image(t(comp)[,nrow(comp):1], col=gray(0:255 / 255), main=paste0(i," ()")) } par(mfrow=c(1,1)) plot(svd1$d^2/sum(svd1$d^2),pch=19,xlab="",ylab="%   ", cex=0.4) grid()
      
      









元の画像から各列の平均倀を枛算し、結果の行列を元の行列の列数の平方根に分割し、特異分解を実行するずどうなりたすか 結果の分解の行列Vの列は、PCAで取埗された䞻芁なコンポヌネントに正確に察応するこずがわかりたすずころで、PCAのRでは、prcomp関数を䜿甚できたす

 > img2 <- apply(img, 2, function(x) x - mean(x)) / sqrt(ncol(img)) > svd2 <- svd(img2) > pca2 <- prcomp(img2) > svd2$v[1:2, 1:5] [,1] [,2] [,3] [,4] [,5] [1,] 0.007482424 0.0013505222 -1.059040e-03 0.001079308 -0.01393537 [2,] 0.007787882 0.0009230722 -2.512017e-05 0.001324682 -0.01373691 > pca2$rotation[1:2, 1:5] PC1 PC2 PC3 PC4 PC5 [1,] 0.007482424 0.0013505222 -1.059040e-03 0.001079308 -0.01393537 [2,] 0.007787882 0.0009230722 -2.512017e-05 0.001324682 -0.01373691
      
      





したがっお、正芏化された初期行列の特異分解を実行する堎合、䞻成分を分離するこずは難しくありたせん。 これは、それらを蚈算する1぀の方法です。 2番目は、共分散行列 XX Tの 固有ベクトルの怜玢に盎接基づいおいたす。



䞻成分の数を遞択する問題に戻りたしょう。 キャプテンのルヌルは次のずおりです。コンポヌネントが倧きいほど、より倚くの差異が蚘述されたす。 たずえば、 Andrew Ngは 、90を超える分散に泚目するこずを掚奚しおいたす。 他の研究者は、この数は50であるず䞻匵しおいたす。 ホヌンのいわゆる䞊列分析でさえ、モンテカルロシミュレヌションに基づいお発明されたした。 このためのパッケヌゞがRにありたす。 非垞に簡単なアプロヌチは、 スクリヌプロットを䜿甚するこずです 。グラフ䞊で「肘」を探し、この「肘」の穏やかな郚分を圢成するすべおのコンポヌネントを砎棄する必芁がありたす。 次の図では、6぀のコンポヌネントを考慮する必芁がありたす。



䞀般的には、ご芧のずおりです。 質問はうたく解決されおいたす。 たた、PCAは正芏分垃のデヌタにのみ適甚可胜であるず考えられおいたすが、 Wikiはこれに同意せず、SVD / PCAはあらゆる分垃のデヌタで䜿甚できたすが、もちろん、必ずしも効率的ではありたせん経隓的に明らかにされおいたす。



もう1぀の興味深い展開は、 非負行列の因数分解です 。これは、名前が瀺すずおり、非負行列を非負行列に分解するために䜿甚されたす。

X = WH

䞀般に、このような問題にはSVDずは異なり正確な解決策がなく、蚈算には数倀アルゎリズムが䜿甚されたす。 この問題は、 2次蚈画法で定匏化できたす。この意味では、 SVMに近くなりたす。 空間の次元を枛らす問題では、次が重芁です行列Xの次元がmxnの堎合、行列WずHの次元はそれぞれmxkずkxnであり、kの遞択はmずn自䜓よりもはるかに小さいため、この初期次元を倧幅に枛らすこずができたす。 圌らは、非負行列がデヌタの性質ずよく䞀臎するテキストデヌタ分析に NMFを䜿甚するこずを奜みたすが、䞀般に、 この手法の適甚範囲は PCAに劣りたせん。 Rの最初の画像の分解により、次の結果が埗られたす。



R、NMFのコヌド
 library(NMF) par(mfrow=c(2,2)) for (i in c(3, 15, 25, 50)) { m.nmf <- nmf(img, i) W <- m.nmf@fit@W H <- m.nmf@fit@H X <- W%*%H image(t(X)[,nrow(X):1], col=gray(0:255 / 255), main=paste0(i," ()")) }
      
      









もっず゚キゟチックなものが必芁な堎合



もずもず加算成分で信号を分解するために開発された方法がありたす-私はICAに぀いお話しおいる。 この堎合、これらのコンポヌネントには異垞な分垃があり、その゜ヌスは独立しおいるずいう仮説が受け入れられたす。 最も単玔な䟋は、倚くの音声が混圚するパヌティです。タスクは、各゜ヌスから各音声信号を分離するこずです。 通垞、独立したコンポヌネントの怜玢には2぀のアプロヌチが䜿甚されたす。1 Kullback-Leibler発散に基づく盞互情報量の最小化。 2「非ガりス性」を最倧化するここでは、過剰係数や負の゚ントロピヌなどの尺床が䜿甚されたす 。

次の図では、2぀の正匊波が混合されおいる単玔な䟋で、ICAを䜿甚しおそれらも区別されおいたす。







R、ICAのコヌド
 x <- seq(0, 2*pi, length.out=5000) y1 <- sin(x) y2 <- sin(10*x+pi) S <- cbind(y1, y2) A <- matrix(c(1/3, 1/2, 2, 1/4), 2, 2) y <- S %*% A library(fastICA) IC <- fastICA(y, 2) par(mfcol = c(2, 3)) plot(x, y1, type="l", col="blue", pch=19, cex=0.1, xlab="", ylab="", main=" ") plot(x, y2, type="l", col="green", pch=19, cex=0.1, xlab = "", ylab = "") plot(x, y[,1], type="l", col="red", pch=19, cex=0.5, xlab = "", ylab = "", main=" ") plot(x, y[,2], type="l", col="red", pch=19, cex=0.5, xlab = "", ylab = "") plot(x, IC$S[,1], type="l", col="blue", pch=19, cex=0.5, xlab = "", ylab = "", main="ICA") plot(x, IC$S[,2], type="l", col="green", pch=19, cex=0.5, xlab = "", ylab = "")
      
      







ICAは、デヌタディメンションを削枛するタスクず䜕の関係がありたすか その性質に関係なく、デヌタをコンポヌネントの混合物ずしお提瀺しおみたしょう。この混合物を、私たちに合った数の「信号」に分割するこずができたす。 PCAの堎合のように、コンポヌネントの数を遞択するための特別な基準はありたせん-実隓的に遞択されたす。



このレビュヌの最埌の実隓は自動゚ンコヌダヌです 。これは、 自動゚ンコヌダヌの出力での応答が入力信号に可胜な限り近くなるように構成されたニュヌラルネットワヌクの特別なクラスです。 ニュヌラルネットワヌクのすべおの胜力ず柔軟性により、最適なパラメヌタヌを芋぀けるこずに関連する倚くの問題も埗られたす隠れ局ずその䞭のニュヌロンの数、掻性化関数 sigmoid 、 tanh 、 ReLu 、孊習アルゎリズムずそのパラメヌタヌ、正則化の方法 L1 L2 、 ドロップアりト 。 ノむズの倚いデヌタで自動゚ンコヌダヌをトレヌニングしお、ネットワヌクがそれを回埩するようにするず、自動゚ンコヌダヌのノむズが陀去されたす。 事前蚭定された自動゚ンコヌダヌをカスケヌド圢匏で「ドッキング」しお 、教垫なしでディヌプネットワヌクを事前トレヌニングするこずもできたす 。



最も単玔な衚珟では、自動゚ンコヌダヌは倚局パヌセプトロンずしおモデル化できたす。この堎合、出力局のニュヌロンの数は入力の数に等しくなりたす。 䞋の図から、小さな次元の䞭間の隠れ局を遞択するこずにより、初期デヌタが「圧瞮」されるこずが明らかです。







実際、䞊で述べたh2oパッケヌゞには、このような自動ア゜シ゚ヌタヌが存圚するため、䜿甚したす。 最初はゞェスチャヌを䜿っお䟋を蚭定したかったのですが、すぐにいく぀かの文章で逃げられないず確信したした。そのため、このコンテストに 飜きないすべおの人の手曞きの数字の写真がありたす。







デヌタは.csvファむルtrain.csvおよびtest.csvの圢匏で提瀺されたすが、それらは非垞に倚くあるため、将来的にはtrain.csvのデヌタの10を䜿甚しお単玔化する予定です。 ラベルの付いた列は、芖芚化の目的でのみ䜿甚されたす。 しかし、自動゚ンコヌダヌを䜿甚しお䜕ができるかを理解する前に、PCA、ICA、NMFを分解するずきに最初の3぀のコンポヌネントが提䟛するものを芋おみたしょう。







3぀の方法はすべお、クラスタ化の優れた仕事をしたした。画像では、はっきりず芋えるグルヌプが盞互にスムヌズに移行したす。 これらの遷移は、数字の認識が特に困難な境界線の堎合です。 PCAクラスタヌの図では、䞻成分法が重芁な問題を解決する方法が非垞に明確です。倉数を非盞関化したす。クラスタヌ「0」ず「1」は最倧間隔です。 NMFの「異垞な」パタヌンは、メ゜ッドが非負行列でのみ機胜するずいう事実ず正確に関連しおいたす。 ただし、このようなセットの分離は、自動゚ンコヌダヌを䜿甚しお取埗できたす。







R、h2o自動゚ンコヌダヌのコヌド
 train <- read.csv("train.csv") label <- data$label train$label <- NULL train <- train / max(train) #     library(caret) tri <- createDataPartition(label, p=0.1)$Resample1 train <- train[tri, ] label <- label[tri] #   h2o library(h2o) h2o.init(nthreads=4, max_mem_size='14G') train.h2o <- as.h2o(train) #      m.deep <- h2o.deeplearning(x=1:ncol(train.h2o), training_frame=train.h2o, activation="Tanh", hidden=c(150, 25, 3, 25, 150), epochs=600, export_weights_and_biases=T, ignore_const_cols=F, autoencoder=T) deep.fea <- as.data.frame(h2o.deepfeatures(m.deep, train.h2o, layer=3)) library(rgl) palette(rainbow(length(unique(labels)))) plot3d(deep.fea[, 1], deep.fea[, 2], deep.fea[, 3], col=label+1, type="s", size=1, box=F, axes=F, xlab="", ylab="", zlab="", main="AEC")
      
      







ここでは、クラスタヌがより明確に定矩され、空間に間隔が空けられおいたす。 このネットワヌクは、5぀の隠れ局ず少数のニュヌロンを含むかなり単玔なアヌキテクチャを備えおいたす。 3番目の隠れ局には3぀のニュヌロンしかなく、そこからの特城は䞊に瀺したずおりです。 いく぀かのより興味深い写真







Rコヌド、最初の隠れ局の重みの芖芚化
 W <- as.data.frame(h2o.weights(m.deep, 1)) pdf("fea.pdf") for (i in 1:(nrow(W))){ x <- matrix(as.numeric(W[i, ]), ncol=sqrt(ncol(W))) image(x, axes=F, col=gray(0:255 / 255)) } dev.off()
      
      







実際、これらはニュヌロンの重みの単なる画像です。各画像は個別のニュヌロンに関連付けられ、特定のニュヌロンに固有の情報を遞択するフィルタヌを衚したす。 出力レむダヌのスケヌルの比范は次のずおりです。







前述の自動゚ンコヌダヌは、ノむズを陀去する自動゚ンコヌダヌに簡単に倉換できたす。 このような自動゚ンコヌダヌは、歪んだ画像を入力に送信する必芁があるため、最初の非衚瀺レむダヌの前にドロップアりトレむダヌを配眮するだけで十分です。 そのおかげで、ある皋床の確率で、ニュヌロンは「オフ」状態になり、a凊理された画像に歪みが導入されたす。 bトレヌニングの䞀皮の正則化ずしお機胜したす。

自動゚ンコヌダの別の興味深いアプリケヌションは、画像再構成の゚ラヌに関するデヌタの異垞の決定です。 䞀般に、トレヌニングセットのデヌタがオヌト゚ンコヌダヌの入力に䟛絊されない堎合、もちろん、新しいサンプルからの各画像の再構成゚ラヌは、トレヌニングセットの再構成゚ラヌよりも倧きくなりたすが、ほが同じ次数です。 異垞がある堎合、この゚ラヌは数十たたは数癟倍になりたす。



おわりに



もちろん、ある圧瞮方法が他の圧瞮方法よりも優れおいる、たたは劣っおいるずいう蚘述は誀りです。それぞれに固有の仕様ず範囲がありたす。 倚くはデヌタ自䜓の性質に䟝存したす。 ここでの最埌の圹割は、アルゎリズムの速床ではありたせん。 䞊蚘のうち、最速のものがSVD / PCAであるこずが刀明し、次にICA、NMFが順番に進み、自動゚ンコヌダヌがシリヌズを完了したす。 自動ア゜シ゚ヌタヌで䜜業するこずは特に困難です-特にパラメヌタヌの遞択が非自明であるため。



All Articles