読者です 読者をやめる 読者になる 読者になる

Stanfordの授業CS231nでニューラルネット、畳み込みニューラルネットを学ぶ

StanfordのCS231nという授業の教材を使って、機械学習を学んだ。 自分のメモのまとめ。 (写経に近いので注意) Module 1: Neural Networks Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits L1/L2 distances, hyper…

【CS231n】Putting it together: Minimal Neural Network Case Study

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. この記事では、toy Neural Networkを実装する。 最初にシンプルなlinear classifierを作り、その次に2層NNへ拡張する Generating some data 簡単に線形分離できないdatasetを生成する 例として渦状のデ…

【CS231n】Neural Networks Part 3: Learning and Evaluation

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 前回の記事では、層の結合やデータやloss functionなどNNの静的構造について確認した。 本記事では、NNのダイナミクス(パラメータを学習するプロセスやハイパーパラメータの決定方法)について学ぶ。 …

【CS231n】Neural Networks Part 2: Setting up the Data and the Loss

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 本記事では,Neural Network(NN)を中心に扱う. Setting up the data and the model Linear Classification用からNN用へscore functionの拡張 linear mappingを繰り返しの中にnon-linearityを織り交ぜ…

【CS231n】Neural Networks Part1: Setting up the Architecture

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 本記事では,Neural Network(NN)を中心に扱う. Quick intro linear classificationでは画像をクラスに分類するために、によって、各クラスのスコアを計算したのだった は行列、は入力ベクトル CIFAR-1…

【CS231n】Backpropagation, Intuitions

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 本記事では,Backpropagation(誤差逆伝播法)を中心に扱う. Introduction 本セクションでは勾配とbackpropagationを直観的に理解してみる backpropagationとは、chain rule(連鎖律)を反復的に利用…

【CS231n】Optimization

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 本記事では,Optimizationについて,下記項目を中心に扱う. Stochastic Gradient Descent Introduction 前セクションの展開 画像の生ピクセルをクラススコアにマッピングするscore function パラメー…

【CS231n】Linear classification

Stanford大の教材CS231nを使ってNNやCNNを学んでいる. 本記事では,Linear Classificationについて,下記項目を中心に扱う. Support Vector Machine Softmax Linear Classification k-Nearest Neighborは以下の欠点があった 空間的な非効率性 分類器は全て…

はてブmarkdown記法で数式を記述する方法

はてなブログで数式記述にはクセがあり,非常に使いにくい. テンプレをメモしておく. 基本 texに準ずる記法 わからない場合はまずtexの用法でググると良い 文中に埋め込むときは $ または \( で囲む. 独立した段落とするときは $$ または \[ で囲む. 記…

【CS231n】Image Classification

Stanford大の教材CS231nを使ってNNやCNNを学ぶ. 本記事は,Image Classificationやdata-driven approachについて.下記項目などを学ぶ. Data-driven Approach k-Nearest Neighbor train/val/test splits Image Classification 画像分類問題とは,入力画像…

【Deep Learning】計算グラフによる誤差逆伝播法(Back propagation)の理解

背景 ニューラルネットの重みなどのパラメータ決定を勾配法で行う 勾配法の計算の際に損失関数の微分が必要 微分計算の高速化が求められる. その高速化のために誤差逆伝播法を用いるのが一般的 その誤差逆伝播法を数式ではなく,計算グラフから理解してみる…

【読書メモ】ゼロから作るDeep Learning

ゼロから作るDeep Learningを読んだ。 ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装作者: 斎藤康毅出版社/メーカー: オライリージャパン発売日: 2016/09/24メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見る …

【ゼロから作るDeep Learning】8章 ディープラーニング

認識精度を高めるには MNISTに対する認識精度のランキング Classification datasets results MNISTに対しては、層をそこまで深くせずに最高精度の結果が得られている。 手書き数字という比較的単純な問題に対しては、ネットワークの表現力を高める必要がない…

【ゼロから作るDeep Learning】7章 畳み込みニューラルネットワーク

本章では畳み込みニューラルネットワーク(convolutional neural network)を学ぶ 全体の構造 これまでの全結合層 [Affine, ReLU]を繰り返し,最後に[Affine,Softmax] CNN [Conv, ReLU, Pooling]を繰り返し,最後の方で[Affine, ReLU], 最後に[Affine, Soft…

【ゼロから作るDeep Learning】6章 学習に関するテクニック

本章では,ニューラルネットの学習のためのテクニックを学ぶ 最適な重みパラメータを探索する最適化手法 重みパラメータの初期値 ハイパーパラメータの設定方法 過学習への対応策 Weight Decoy Dropout Batch Normalization 確率的勾配降下法(SGD:stochast…

【ゼロから作るDeep Learning】5章 誤差逆伝播法

誤差逆伝播法 数値微分による勾配の計算は,実装が平易だが,計算に時間がかかるという難点がある そこで微分計算を効率的に行う誤差逆伝播法の出番となる 誤差逆伝播法は色んな分野で使われている 天気予報 数値的安定性の分析 誤差逆伝播法の理解の方法は2…

【ゼロから作るDeep Learning】4章 ニューラルネットワークの学習

本章では,ニューラルネットワークの学習を扱う. 学習とは「訓練データから最適な重みパラメータの値を自動で獲得する」こと. データから学習する ニューラルネットワークの特徴は,データから学習できること ニューラルネットワークのパラメータは数千,…

【ゼロから作るDeep Learning】3章 ニューラルネットワーク

本章ではニューラルネットワークが紹介がされている. ニューラルネットワークは,多層パーセプトロンに活性化関数の概念が加わったもの(と言える) ニューラルネットワークの例 入力層 中間層 隠れ層ともいう 出力層 パーセプトロン パーセプトロンにおい…

【ゼロから作るDeep Learning】2章 パーセプトロン

本章ではパーセプトロン(parceptron)というアルゴリズムが紹介されている。 このパーセプトロンが、後々学ぶニューラルネットワークやディープラーニングのための基礎的な概念となっている。 パーセプトロンとは 複数の信号を入力として受取り,1つの信号…

【ゼロから作るDeep Learning】1章 Python入門

本章ではPython(とNumPy、Matplotlib)が紹介されている。 Numpyにはブロードキャストという形状の異なる配列の演算が可能となる機能がある たとえば行列とスカラ値の掛け算を記述すると、スカラ値が行列に拡大されて演算が行われる 詳しくは下記を見ておく…

【プログラミング言語C++ by Bjarne Stroustrup】第3章 C++を探検しよう:抽象化のメカニズム

はじめに クラス 具象型 抽象型 あとで定義される具象クラスの純粋なインターフェース 実装の詳細には一切関与しない クラス階層には以下に示す2つの利点がある インターフェース継承(interface inheritance) 派生クラスのオブジェクトは,基底クラスのオブ…

【C++】constとconstexprの違い

個人メモ. 下記から引用 http://kaworu.jpn.org/cpp/constexpr https://cpprefjp.github.io/lang/cpp11/constexpr.html C++の定数 C++の定数は2種類ある コンパイル時定数 コンパイル時に値が決定されると規格によって定められた定数 固定長配列のサイズや…

【プログラミング言語C++ by Bjarne Stroustrup】第2章 C++を探検しよう:基本

型 変数の初期化 =で初期化する形式がCから伝統的に行われてきたが, どれを使うか迷うのなら,並びを{}で囲む形式の方を使うとよい. 情報が欠落する縮小変換を避けられる. int i1 = 7.2; // 縮小変換 int i2 {7.2}; // エラー:浮動小数点から整数への変換…

【プログラミング言語C++ by Bjarne Stroustrup】第1章 はじめに

C++の設計は以下に示す両方を提供するという考えに基づいている 組込の演算と型をハードウェアに直接マッピングすること 使いやすくて柔軟な抽象化のメカニズム The Design and Evolution of C++ [Stroustrup, 1994]でも紹介したC++の設計思想 C++よりも下位…

【読書メモ】英単語のこんな意味,知ってますか

「英単語のこんな意味,知ってますか」を読んで,学んだことをメモ. ear 意味 実,穂 例 They began to gather in ears of rice. 稲穂に集まり始めた feel 意味 (直接)触ってみる 例 Feel whether it’s hot. それが熱いか触ってごらん service 意味 兵役…

【サーベイ】Shape and Friction Recognition of 3D Virtual Objects by Using 2-DOF Indirect Haptic Interface(IEEE World Haptic Conference 2015)

本エントリは ヒューマンコンピュータインタラクション論文紹介 Advent Calendar 2016の18日目です。 2015年のWorld Haptic Conference(WHC)で発表された, 「Shape and Friction Recognition of 3D Virtual Objects by Using 2-DOF Indirect Haptic Interfa…

プロジェクトマネジメント アンチパターンのまとめ

プロジェクトマネジメントのアンチパターン(Project Management Antipattern)をまとめた. 基本的に下記の本を邦訳した内容になっている. https://www.amazon.com/AntiPatterns-Refactoring-Software-Architectures-Projects/dp/0471197130 プロジェクト…

【プロマネ アンチパターン】Email is Dangerous

どんな問題? Emailは潜在的な危険性をはらんでいる 機密情報の伝達には不適切 感情的な論争にも不適切 Emailは下記の点でよろしくない 機密情報が読んでほしくない人に伝わる 多くの人に瞬時に伝わる The Washington Postに載るくらいの気持ちで書く 永遠に…

【プロマネ アンチパターン】The Feud

Feudとは争い,反目,確執のこと どんな問題? マネージャー間の衝突 開発者は生産的なコミュニケーションを欠く 技術移転ができなくなる 組織全体の生産性とイメージは低下する どう解決する? pizza partyで解決する 大抵の問題はオフィスで談笑して解決す…

【プロマネ アンチパターン】Fire Drill

どんな問題? 設計と開発が遅延してしまうことはよくある 管理側が開発者の進捗を止めてしまう 「待て」と指示する 不明瞭な指示を与える 外的要因でプロジェクトの方向性が変化する Fire Drillの始まり プロジェクトの納品キャンセルの危機が迫る 管理側が…

【プロマネ アンチパターン】Throw it over the Wall

どんな問題? 文書は説明的でない事が多い 著者のvisionやinsightを理解すること = 文書を理解すること 人の性向はそれぞれ 個人の性向を理解すると,その人の仕事を理解できる ガイドラインは完璧ではない 予期しない結果につながることも 文書の目的を理解…

【プロマネ アンチパターン】Project Mismanagement

どんな問題? プロジェクトの大事なactivityが見落とされたり,過小に評価される technical planning architecture quality-control activities inspection test 症状と結果 アーキテクチャ的な戦略がなくて,設計が難しく実装できない コードレビューやイン…

【プロマネ アンチパターン】Smoke and Mirrors

どんな問題? デモシステム 重要なセールスツール エンドユーザはデモを製品版のクオリティと解釈する 開発者は厳しい状況に追い込まれる 約束の性能まで向上させることを望まれる エンドユーザ 期待した性能,コスト,納期が得られない どう解決する? エン…

【プロマネ アンチパターン】Irrational Management

どんな問題? マネージャーの優柔不断さと反射的な反応の連鎖がひどい結果を招く 決断できないマネージャー 性向に問題がある 詳細に取り憑かれる 一方で,危機に直面したときに反射的な対応をしてしまったりする こうしたirrational Managementは,人を率い…

【プロマネ アンチパターン】Intellectual Violence

どんな問題? Intellectual violenceは,会議中の話題である理論・技術・バズワードを知らないことで萎縮すると起きてしまう 「知らない」と披露しにくい 結果的に,コミュニケーションが滞る 劣等感を感じながらそのトピックを避けつつ会話を続けるのは大変…

【プロマネ アンチパターン】Corncob

Corncobの元々の意味はトウモロコシの穂軸. どんな問題? Corncobは一緒に働くのが難しい人のこと 個人の性格的な理由 ソフト開発はそもそもストレスフル 厳しいスケジュール 厳しい予算 Corncobsはさらに不必要なストレスを生み出す Corncobsは政治力が高…

【プロマネ アンチパターン】Fear of Success

どんな問題? プロジェクト成功間際に起こる問題 懸念に囚われはじめ,理性的な行動ができなくなる どう解決する? 管理者はプロジェクトの成功を宣言すること たとえ,結果が不明だとしても チームに対して達成を味わせる yusuke-ujitoko.hatenablog.com

【プロマネ アンチパターン】Death By Planning

どんな問題? 多くのプロジェクトは計画しすぎて失敗する 要因 コスト計算 スタッフ最適化 2種類の計画過多がある Glass Case Plan Detailitis Planのサブセット プロジェクトが始まったら計画過多はなくなる Detailitis Plan プロジェクトが終わるまで計画…

【プロマネ アンチパターン】Viewgraph Engineering

どんな問題? 開発者がコーディングより,文書作成に時間をとられること 開発者自身のデメリットが大きい フラストレーションが溜まる 本当の能力を生かせない 最新技術に追いつけなくなる どう解決する? 文書作成させられている開発者はプロトタイピングに…

【プロマネ アンチパターン】Analysis Paralysis

どんな問題? 分析フェーズで完璧を求めるときに起きる 特徴 モデルが何度も改変される モデルが詳細すぎる オブジェクト指向では,分析時に完璧すぎるモデルを作る必要はない ドメイン専門家に任せる事ができるがOODの強みであるはず Analysis Paralysisを…

【プロマネ アンチパターン】Blowhard Jamboree

どんな問題? 業界の専門家の発言は技術採択への影響力が大きい 内容に誤解があることが多い 間接的に得た情報をもとにする 直接の研究や経験をもとしたものは少ない. どう解決する? 組織に技術領域ごとの専門家をもつこと 事実と嘘を見抜ける yusuke-ujit…

ソフトウェア開発 アンチパターンのまとめ

ソフトウェア開発アンチパターン(Software Development Antipattern)をまとめた. 基本的に下記の本を邦訳した内容になっている. https://www.amazon.com/AntiPatterns-Refactoring-Software-Architectures-Projects/dp/0471197130 ソフトウェア開発アン…

【ソフト開発 アンチパターン】Mushroom Management

どんな問題? 開発者とエンドユーザが分離されてしまう 要件は仲介役を通じて伝達される 仲介役とは アーキテクト マネージャー 要件分析者 Mushroom Managementが行われる現場 要件はユーザと開発者の両方に完全理解されるとする認識で進む. しかし実際に…

【ソフト開発 アンチパターン】Cut-And-Paste Programming

どんな問題? 似たコードが散見されること 先行例を少し改変して再利用すること line countの指標的には良い 短期的には成功できる 症状 同じ類のバグが散見される 同じ類のバグを全て治すのは難しい 全体の生産性に寄与しないコードが増えていく コードレビ…

【ソフト開発 アンチパターン】Walking through a minefield

どんな問題? 現在のソフト技術を使うことは地雷原の中を歩いているようなもの リリースされた製品の中にはたくさんのバグがある 一行につき2~5個のバグ 昔のシンプルなシステムでは問題なかった もしバグが有っても,結果には影響が少なかった. どう解決す…

【ソフト開発 アンチパターン】Input Kludge

kludgeとは「その場しのぎの」という意味 どんな問題? 「エンドユーザがキーボードを触った瞬間にプログラムがクラッシュする」 入力に対してad hocなアルゴリズムを使ったときに起きる エンドユーザはとんでもなく多様な入力を行う どう解決する? 必ず製…

【ソフト開発 アンチパターン】Spaghetti Code

どんな問題? スパゲッティコードは,構造をあまりもたないコードの中に現れる 開発者自身でさえも構造が把握できない オブジェクト指向言語の場合,以下の特徴をもつ オブジェクト数が少ない メンバ関数は大規模 オブジェクト間の相互作用が少ない オブジェ…

【ソフト開発 アンチパターン】Golden Hammer

どんな問題? ソフト開発チームがある特定の解決法やベンダー製品に親しみすぎると, どんな場面にもお馴染みの手法で解決しようとしてしまう 大抵の場合,問題に対してミスマッチな手法である 代替手段を探そうとしなくなる 症状と結果 多様な製品に対して…

【ソフト開発 アンチパターン】Boat Anchor

どんな問題? Boat anchorとは プロジェクトに何の貢献もしないソフトやハードのこと でも結構高い買い物だったりする 高価なだけに,それを使ってプロジェクトを推進する余計な仕事が発生する なんで買ってしまうかというと ポリシーやプラグマティックな理…

【ソフト開発 アンチパターン】Poltergeists

どんな問題? ポルターガイストは,オブジェクト指向に詳しくない設計者が作ってしまう以下の特徴をもつクラス 責任と役割が小さい ライフサイクルが極めて短い 役割は他のクラスの関数を起動するだけ 予め決まったシーケンスで managerとかcontrollerとかが…