タグ付けされた質問 「machine-learning」

データのパターンを自動的に発見し、それらに基づいて適切な決定を行うコンピューターアルゴリズムに関する質問。

2
その決定を説明するテキスト分類子
短い文章のテキストカテゴライザを構築しています。「入力したテキストのカテゴリはCです」とユーザーに伝えるだけでなく、この決定を下した理由を簡潔でわかりやすく説明したいと思います。たとえば、「私はあなたの文を複雑な3層ニューラルネットワークに入れ、それが最良のスコアを出した答えです」とユーザーに伝えたくありません。「トレーニングデータにX、Y、Zなどの文が含まれているため、このカテゴリの特徴であるU、V、Wという文が含まれています」などの説明が必要です。 私の質問は、どのような分類アルゴリズムがそのようなアプリケーションに最適ですか? k-nearest-neighboursは良い候補のように思えます。ユーザーに次のように伝えることができるためです。私はパフォーマンスと説明能力のバランスが取れた分類を探しています。 編集:そのような分類器を探すために多くの時間を費やした後、私はlimduと呼ばれる機械学習ライブラリの構築を開始しました。これにより、分類器が彼らの決定を説明できるようになります。それはまだ開発中ですが、分類器が頻繁に失敗する理由を私自身と同僚に説明するのに役立ちました...

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
高次元特徴空間におけるK最近傍のような非パラメトリック手法
k-Nearest-Neighbourの主なアイデアは、最も近い点を考慮に入れ、多数決によってデータの分類を決定します。その場合、局所性に敏感なハッシュのようなメソッドは最も近い近傍を効率的に見つけることができるため、高次元のデータでは問題が発生しないはずです。kkk さらに、ベイジアンネットワークでの特徴選択により、データの次元が削減され、学習が容易になります。 ただし、統計的学習におけるJohn Laffertyによるこのレビューペーパーは、高次元の特徴空間でのノンパラメトリック学習は依然として課題であり、未解決であることを指摘しています。 何が問題になっていますか?

2
指定された文字列を受け入れ、他の指定された文字列を拒否する最小のDFA
二組を考えるとのアルファベットを超える文字列のΣ、我々は計算することができ、最小決定性有限オートマトン(DFA)MようにA ⊆ L (M )とL (M )⊆ Σ * ∖ B?A 、Bあ、BA,BΣΣ\SigmaMMMA ⊆ L (M)あ⊆L(M)A \subseteq L(M)L (M)⊆ Σ∗∖ BL(M)⊆Σ∗∖BL(M) \subseteq \Sigma^*\setminus B つまり、は一連の正の例を表します。Aのすべての文字列は、DFAによって受け入れられる必要があります。 Bは否定的な例のセットを表します。Bの文字列はDFAで受け入れられません。ああAああABBBBBB DFA最小化手法を使用して、これを解決する方法はありますか?受け入れ状態、拒否状態、および「ドントケア」状態の3種類の状態を持つDFAのようなオートマトンを作成することを想像できます(「ドントケア」状態で終わるすべての入力を受け入れることができます)または拒否されました)。しかし、これを通常のDFAに最小化する方法を見つけることができますか? ポジティブな例とネガティブな例を考えると、これをDFAの学習の問題と考えることができます。 これは、正規表現ゴルフNP-Completeに触発されてい ます。、DFAではなく正規表現に対して同様の質問をします。

1
遺伝的プログラミングは今日関連していますか?
私の主な関心事は、遺伝的プログラミングが活発な研究分野であるかどうかであり、実際にいくつかの有望なアプリケーションがあります。今日の主流ニュースで言及されているように、機械学習の分野ではニューラルネットワークが主な流行語のようですが、同様の遺伝的プログラミングの「成功事例」は聞いたことがありません。

1
ナイーブベイズの実装
私は、ラプラシアン平滑化によるテキスト分類のための単純ベイズアルゴリズムを実装しています。私が抱えている問題は、多くの小さな分数を乗算しているため、確率がゼロに近づくことです。したがって、確率は最終的にゼロになります。これは、ドキュメントとトレーニングセット内にいくつかの単語があるためです。 このため、テキストを分類することができません。この問題を回避する方法はありますか?私の実装で何か問題がありますか?

4
NP問題を解決するための進化型人工ニューラルネットワーク
私は最近、Google Research Blogからニューラルネットワークについて話している非常に興味深いブログエントリを読みました。基本的に、このニューラルネットワークを使用して、画像認識などのさまざまな問題を解決します。彼らは遺伝的アルゴリズムを使用して、軸索の重みを「進化」させます。 だから基本的に私の考えは次のとおりです。数字を認識するプログラムを書くことになっていた場合、どうやって始めればよいかわからない(漠然とした考えがあるかもしれませんが、私のポイントは、それは簡単ではなく、簡単ではありません)ですが、ニューラルネットワークを使用する必要はありません。ニューラルネットワークが進化するための適切なコンテキストを作成することにより、私のニューラルネットワークは「正しいアルゴリズムを見つけます」。以下で、記事の非常に興味深い部分を引用しました。そこでは、各層が画像認識のプロセスでどのように異なる役割を果たすかを説明しています。 ニューラルネットワークの課題の1つは、各レイヤーで何が起こっているかを正確に理解することです。トレーニング後、各レイヤーは、最終的なレイヤーが本質的に画像の表示内容を決定するまで、画像のより高いレベルの特徴を段階的に抽出します。たとえば、最初のレイヤーはエッジやコーナーを探している可能性があります。中間層は、基本的な機能を解釈して、ドアや葉などの全体的な形状やコンポーネントを探します。最後のいくつかの層は、それらを組み立てて完全な解釈にします。これらのニューロンは、建物全体や樹木などの非常に複雑なものに応答してアクティブになります。 だから基本的に私の質問は次のとおりです:すべてのNP問題を解決するために遺伝的アルゴリズム+ニューラルネットワークを使用できませんでしたか?適切な進化のコンテキストを作成し、「自然」に解決策を見つけさせるだけです。 インセプショニズム:ニューラルネットワークの詳細 編集:私は多くの場合、ブルートフォースを使用したり、非効率的なソリューションを見つけたりできることを知っています。それが、進化する人工ニューラルネットワークを強調する理由です。私がコメントで言ったように:十分な時間と適切な突然変異率があれば、最適な解決策を見つけることができました(または少なくともそれが私の考えです)。

2
SVM分類の方が正確な分類子はどれですか。
SVMの分類を学習していますが、問題が発生しています。このジレンマに用語があるかどうかはわかりません。 (両方の性別の)健康な人と(両方の性別の)肝臓がんの人のサンプルを前提として、SVMで患者を分類するとします。健康な人のサンプルをクラス1、癌の人をクラス2とラベル付けすると、バイナリSVMをトレーニングして分類子1を取得し、新しい患者を予測できます。次に、別のシナリオをイメージします。SVM分類の前に、最初にすべてのサンプルを性別で割るとします。性別ごとに、健康な患者と癌患者を2つのクラスに分類し、バイナリSVMをトレーニングして、女性と男性のサンプルの分類子2と分類子3をそれぞれ取得します。問題は、より正確な予測を得るために使用する分類子1または2の新しい女性患者がいるかどうかです。ここに私が持っている議論のジレンマがあります (1)サンプル数が多い場合、予測はより正確になります。この議論に基づいて、分類子1は良い選択のようです。 (2)ただし、サンプルを最初に女性と男性のグループに分けた場合、新しい患者(未知のテストサンプル)は女性であるため、分類子2の方が適しているようです。 この種のジレンマには用語がありますか、それともこのような問題を解決するための詳細情報や方法を誰かが知っていますか?これが正当な質問であるかどうかさえわかりませんし、事前にナイーブな質問で申し訳ありません。ありがとう

2
エミュレーター入力の最適化問題をどのように分類しますか?どのアルゴリズムでそれにアプローチする必要がありますか?
質問の性質上、多くの背景情報を含める必要があります(私の質問は:これをどのように絞り込むのですか?)とはいえ、要約すると(私の知る限り)次のようになります。 非常に大きな組み合わせ検索空間で局所最適を見つける方法は何ですか? バックグラウンド ツールを使用したスーパープレイコミュニティでは、コスト(通常は完了までの時間)を最小限に抑えるために、ビデオゲームコンソールまたはエミュレータに特別に細工された(リアルタイムでは生成されない)入力を提供することを目指しています。これが現在行われている方法は、例えば(何度もゲームフレーム・バイ・フレームを再生し、フレームごとに入力を指定して、多くの場合、実行の部分をやり直すことである最近発表されたため、実行ゼルダの伝説を:時間のオカリナを持っています合計198,590回の再試行)。 これらの実行を実行して目標を達成するには、通常、ルート計画とトラバーサルという2つの主な要因があります。前者は後者よりもはるかに「創造的」です。 ルート計画は、プレイヤーがゲームを完了するために全体的にナビゲートする方法を決定するものであり、多くの場合、ランの最も重要な部分です。これは、たとえば、使用するソート方法の選択に似ています。世界で最高のバブルソートは、100万要素のクイックソートよりも優れているわけではありません。 ただし、完璧を求めて、トラバーサル(ルートの実行方法)も大きな要因です。類推を続けると、これがソーティングアルゴリズムの実装方法です。特定の入力フレームがないと実行できないルートもあります。これはツール支援の最も退屈なプロセスであり、完了したランの生成には数か月、場合によっては数年もかか​​ります。同じアイデアのさまざまなバリエーションを試してみるのが一番だと考えられるため、難しいプロセスではありません(人間にとって)。このタスクへのマシンの適用は、ここでは適切なようです。 私の目標は、今やニンテンドー64システム全体のトラバーサルプロセスを自動化することです。この問題の探索空間があるはるかに強引なアプローチで攻撃するには大きすぎます。N64ランのnフレームセグメントには2つの30n可能な入力があります。つまり、30フレームの入力(30FPSでの1秒)には2つの900可能な入力があります。これらの潜在的なソリューションをテストすることは不可能であり、2時間の実行全体をテストすることはできません。 ただし、フルランの全体的な最適化を試行する(または試行するつもりはありません)ことに興味はありません。むしろ、初期入力が与えられたときに、実行の特定のセグメントの局所最適値(または、ある種のセミグローバル最適化の場合は最も近いn個の局所最適値)を近似したいと思います。つまり、ルートとそのルートの最初のトラバーサルを指定します。そのトラバーサルの近隣を検索してコストを最小限に抑えますが、問題を解決できるすべてのケースを試すように縮退しないでください。 したがって、私のプログラムは、開始状態、入力ストリーム、評価関数を取り、評価の結果を最小化することによって局所最適を出力する必要があります。 現在の状態 現在、すべてのフレームワークを処理しています。これには、エミュレーターの操作、セットアップとティアダウン、構成などによる入力ストリームの評価が含まれます。また、一種のプレースホルダーとして、オプティマイザーは非常に基本的な遺伝的アルゴリズムです。入力ストリームの母集団を評価し、勝者を格納/置換し、勝者ストリームを変更して新しい母集団を生成します。このプロセスは、時間や世代番号など、任意の基準が満たされるまで続きます。 このプログラムの最も遅い部分は、断然、入力ストリームの評価になることに注意してください。これは、nフレームのゲームをエミュレートする必要があるためです。(時間があれば、この種のものへのフックを提供する独自のエミュレーターを作成しますが、今のところ、メッセージの合成と、別のプロセスからの既存のエミュレーターのメモリの変更が残っています。)メインコンピューターかなりモダンで、200フレームの評価には約14秒かかります。そのため、関数の評価の数を最小限に抑えるアルゴリズム(選択した場合)を使用したいと思います。 エミュレータを同時に管理するフレームワークでシステムを作成しました。そのため、線形パフォーマンススケールで一度に多数のストリームを評価できますが、実際には、システムパフォーマンスが低下する前に、実行中のエミュレーターの数は8から32にしかなりません(32は実際にそれを押し上げています)。つまり、オプティマイザは評価を待つ間、かなりの作業を行うことができるため、評価が行われている間に処理を実行できるアルゴリズム(選択した場合)は非常に有益です。 テストとして、私の評価関数(ゲームBanjo Kazooieの)は、フレームごとに、プレーヤーからゴールポイントまでの距離を合計することでした。つまり、最適なソリューションは、できるだけ早くそのポイントに近づくことです。変異をアナログスティックのみに制限すると、問題のないソリューションを取得するのに1日かかりました。(これは同時実行を実装する前でした。) 同時実行を追加した後、Aボタンを押す操作の変更を有効にし、ジャンプが必要な領域で同じ評価関数を実行しました。24個のエミュレーターを実行すると、最初は空白の入力ストリームから目標に到達するのに約1時間かかりましたが、最適に近いものに到達するには、おそらく数日実行する必要があります。 問題 私が直面している問題は、最適化問題を適切にモデル化する方法を知るのに数学的最適化フィールドについて十分に知らないということです!たとえば、Wikipediaで説明されているように、多くのアルゴリズムの概念的なアイデアを大まかに追跡できますが、問題を分類する方法や、そのカテゴリに最新のアルゴリズムを選択する方法がわかりません。 私が知ることができることから、私は非常に大きな近所との組み合わせの問題を抱えています。その上、評価関数は非常に不連続で、勾配がなく、多くのプラトーがあります。また、制約はそれほど多くありませんが、問題を解決するのに役立つ場合は、それらを表現する機能を喜んで追加します。たとえば、[スタート]ボタンを使用しないように指定できますが、これは一般的なケースではありません。 質問 だから私の質問は:これをどのようにモデル化するのですか?どのような最適化問題を解決しようとしていますか?どのアルゴリズムを使用すると思いますか?私は研究論文を読むことを恐れていないので、何を読むべきかを知らせてください! 直感的に、遺伝的アルゴリズムは実際には学習していないように見えるため、最高ではありません。たとえば、[開始]を押すと常に評価が悪化するように見える場合(ゲームが一時停止するため)、「ある時点で[開始]を押しても役に立たない」と学習するある種のデザイナーまたは頭脳があるはずです。しかし、この目標でさえ、思ったほど簡単ではありません。スーパーマリオ64のいわゆる「一時停止後方ロングジャンプ」などのように、プレスを押すのが最適な場合があるためです。ここでは、脳はより複雑なパターンを学習する必要があります。「スタートを押しても、プレーヤーがこの非常に特殊な状態にあり、ボタンを押しながらいくつかの組み合わせを続ける場合を除き、役に立たない」 変更にもっと適した他の方法で入力を表現する(またはマシンが学習できる)ようです。フレームごとの入力は細かく見えます。本当に必要なのは「アクション」であり、これは複数のフレームにまたがる場合があります...しかし、多くの発見はフレームごとに行われるため、完全に除外することはできません(前述の一時停止後方ロングジャンプには、フレームレベルの精度が必要です)。また、入力がシリアルに処理されるということは、活用できるものでなければならないようですが、方法はわかりません。 現在、私は(リアクティブ)タブー検索、超大規模近傍検索、教育学習ベースの最適化、およびアリコロニー最適化について読んでいます。 この問題は、ランダムな遺伝的アルゴリズム以外のものに取り組むのが難しいほど単純ですか?それとも実際にずっと前に解決された些細な問題ですか?読んでくれてありがとう。返事を送ってくれてありがとう。

1
疑似ランダムシーケンス予測
免責事項:私は生物学者ですので、(おそらく)このような大雑把な言葉で述べられた基本的な質問については申し訳ありません。 この質問をここで行うべきか、DS / SCで行うべきかはわかりませんが、CSは3つのうち最大のものです。(私が投稿した後、Cross-Validatedがそのためのより良い場所かもしれないと思いましたが、悲しいかな)。 バイナリの決定を行うエージェントがいると想像してください。そして、エージェントの決定(「試行」)のそれぞれについて、エージェントに報酬を与えるか、与えない環境。エージェントの決定に報いるための基準は単純ではありません。一般に基準はランダムですが、制限があります。たとえば、環境は同じ決定に対して3回を超えて報酬を与えることはなく、連続して4回を超えて報酬決定を交互にすることはありません。 基準のシーケンスはこのようになります 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 ... しかし決して 0 0 0 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 ... 報酬基準は3回以上繰り返すことができないためです。 これらの条件では、理想的なオブザーバーが報酬を最大化するために行うべき戦略を策定することは非常に簡単です。の線に沿った何か ランダムに決める その基準が3回繰り返されていることを検出した場合-最後の基準とは逆に決定します その基準を4回交互に検出した場合は、最後の基準に従って決定します …

1
競合駆動型条項学習のバックトラッキングの説明
ここのウィキペディアのページでは、CDCLアルゴリズムがかなりよく説明されています(写真はプリンストンのSharad Malikが作成したスライドから撮られたようです)。しかし、どのようにバックトラックするかを説明するとき、それは「適切なポイントへ」と言うだけです。MiniSATもCDCLアルゴリズムのバリアントを使用しているので、このペーパーを読みました。彼らが言っているように見えるのは、学習された節が単位節になるまで後戻りする必要があるということです。それは確かに明確化ですが、私には意味がありません。最後の割り当ては間違いなく、学習した矛盾句の一部になります(おそらくここで間違っているのでしょうか)。そのため、1つのステップをバックトラックすると、すぐに学習した句のユニットが作成され、最後に割り当てられた値が反転します。アルゴリズムは、十分に遠くまでバックトラックすることなく、DPLLとまったく同じように処理されます。さらに、ウィキペディアのページはこのルールに従っていません。望ましいように見えるので、はるかに後戻りします。 どれだけバックトラックすることになっていますか?

1
逆伝播アルゴリズムの運動量項はどのように機能しますか?
運動量項を含むバックプロパゲーションアルゴリズムを使用してニューラルネットワークの重みを更新する場合、学習率を運動量項にも適用する必要がありますか? 運動量の使用に関して私が見つけることができるほとんどの情報は、次のような方程式を持っています。 W′i=Wi−αΔWi+μΔWi−1Wi′=Wi−αΔWi+μΔWi−1W_{i}' = W_{i} - \alpha \Delta W_i + \mu \Delta W_{i-1} ここで、は学習率、は運動量項です。αα\alphaμμ\mu 場合用語がより大きくなる次の繰り返しで、その後長期前の反復からは、現在のものよりも重量に大きな影響を持つことになります。μμ\muαα\alphaΔWΔW\Delta W これは勢い用語の目的ですか?または方程式はもっとこのように見えるべきですか? W′i=Wi−α(ΔWi+μΔWi−1)Wi′=Wi−α(ΔWi+μΔWi−1)W_{i}' = W_{i} - \alpha( \Delta W_i + \mu \Delta W_{i-1}) すなわち。すべてを学習率でスケーリングしていますか?

3
カーネル化トリック、ニューラルネットワーク用
ニューラルネットワークとSVMについて学習してきました。私が読んだチュートリアルでは、SVMにとってカーネル化がいかに重要であるかを強調しました。カーネル関数がない場合、SVMは単なる線形分類器です。カーネル化により、SVMは非線形機能を組み込むこともできるため、より強力な分類器になります。 カーネル化をニューラルネットワークに適用することもできるように思えますが、私が見たニューラルネットワークのチュートリアルではこれについて言及していません。人々は一般的にニューラルネットワークでカーネルトリックを使用しますか?それが大きな違いを生むかどうかを確かめるために誰かが実験していたに違いないと思います。カーネル化は、SVMと同じくらいニューラルネットワークに役立ちますか?なぜですか、なぜそうではありませんか? (カーネルトリックをニューラルネットワークに組み込むいくつかの方法を想像できます。1つの方法は、適切なカーネル関数を使用して、入力(RんRん\mathbb{R}^nのベクトル)をより高次元の入力であるベクトルに前処理することですin RメートルRメートル\mathbb{R}^{m} for M ≥ Nメートル≥んm\ge n。複数層のニューラルネットの場合、別の方法は、ニューラルネットワークの各レベルでカーネル関数を適用することです。

1
ニューラルネットワークの重みが乱数で初期化されるのはなぜですか?
ニューラルネットワークの初期の重みが乱数として初期化されるのはなぜですか?これは「対称性を壊す」ために行われ、これによりニューラルネットワークの学習が速くなることをどこかで読んだことがあります。対称性を壊すことで、学習がどのように速くなりますか? 重みを0に初期化した方がいいでしょうか?そうすれば、重みはそれらの値(正または負)をより速く見つけることができますか? 初期化時に重みが最適値に近いことを期待することとは別に、重みをランダム化する背後にある他の基本的な哲学はありますか?

2
PAC学習の前に何が起こっていたか
私は、機械学習/ AIの知識がない初心者として、PAC学習(計算学習理論)を調査しています。私は主に歴史的な観点からモデルを調査しています。 このため、最も重要なことは、もちろんモデルに基づく結果です。これらの結果を文書化した論文はたくさんあります。ただし、PAC学習の前に何が起こっていたかについても書きたいと思います。これは、ValiantがPACモデルの概念を取り入れたところまでの歴史的背景をスケッチするためです。 これまでに見つけた論文/調査はこれを文書化しておらず、機械学習の真の知識を持っていない人として、これを見つけるのは困難です。したがって、ここで私はこの柔らかい質問をします。これを手伝ってくれる十分な専門家がいると信じているからです。参考文献は高く評価されています。 PACの前に何が起こっていたのかを調べて研究できると、学術界がなぜPACモデルに非常に熱心であるかについて理解を深めることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.