ブックマーク / enakai00.hatenablog.com (17)

  • 量子計算のための「テンソル積」入門 - めもめも

    何の話かと言うと 量子計算の説明で必ず出てくるのが、 といったヘソマーク を用いた積(テンソル積)です。テンソル積の定義にはいくつかの方法(流派?)があり、個人的には、双対空間を用いた多重線型写像として定義するのがいちばんスッキリするのですが、数学的な厳密性にこだわらない方むけには、いまいち抽象的すぎて、遠回りな説明に感じられるかも知れません。 そこでここでは、一番ベタな「数ベクトル」による、基底を用いた定義を使って、テンソル積を説明してみます。 1階のテンソル 量子計算の話を念頭に置いて、2次元の複素ベクトル空間で話を進めます。まずは、2個の複素数を縦にならべた「縦ベクトル」を考えます。 一般には、これは、「複素数ベクトル」と呼ばれるものですが、ここでは、これに「1階のテンソル」という別名を与えます。 また、これを転置して横に数字を並べて、さらに、各成分の複素共役をとったものを考えます。

  • 「1量子ビットしか使えない量子コンピューターでも古典コンピューターより強かった」とは実際どういうことなのか解説してみた - めもめも

    何の話かというと 先日、 www.jst.go.jp ・・・というプレスリリースのタイトルを見て、 当に 1qbit だけで動作する(有意な)計算モデルがあるのか!? と一瞬驚愕したのですが、よくよく論文を読んでみると、「初期状態を 0 に設定できるのが 1qbit だけで、その他の n qbit はランダムに初期化される」という量子計算モデル(DQC-1)についての話だと分かりました。 (参考)Impossibility of Classically Simulating One-Clean-Qubit Computation というわけで、冒頭のタイトルは私の中で、「(1量子ビットを除いて)ランダムに初期化される量子ビットを用いて(古典コンピューターではシミュレーションが困難と考えられる)有意な量子計算を実行するテクニックが考案された」というタイトルに脳内変換されて納得したわけですが

  • 「技術者のための基礎解析学」が発売されます! - めもめも

    www.shoeisha.co.jp 『ITエンジニアのための機械学習理論入門』(技術評論社)、そして、『TensorFlowで学ぶディープラーニング入門』(マイナビ出版)を出版させていただいた後、「機械学習に必要な数学をもう一度しっかりと勉強したい!」ーー そのような声を耳にすることが次第に増えてきました。とりわけ、私の書籍の熱心な読者の方から「このにある数式を理解したくて、あらためて数学の勉強を始めました!」という声を聞き、何かその手助けができないか・・・と真剣に考えていた折、翔泳社の片岡仁氏から「数学でも書きませんか?」とのお声がけをいただき、書の構想が始まりました。決して初心者向けとは言い難い、格的な数学書の企画に賛同いただき、書籍化に向けた支援をいただいたことにあらためて感謝したいと思います。また、書の原稿を隅々まで確認していただいた、査読者の方々にもこの場を借りてお

    「技術者のための基礎解析学」が発売されます! - めもめも
  • 機械学習におけるカーネル法について - めもめも

    何の話かというと 機械学習におけるカーネル法の説明で、よく登場するのがこちらの図です。 左側の (x, y) 平面上の点を分類する場合、このままだと線形分類器(直線で分類するアルゴリズム)ではうまく分類できないのが、右図のように z 軸を追加してデータを変形すると、平面できれいに分割できるようになって、線形分類器による分類がうまくいくというものです。このように、高次元空間にデータを埋め込むことでうまいこと分類するのがカーネル法の仕組みだというわけです。 なのですが・・・・・・・・・・・・・・・・・・・・ これ、当にカーネル法の原理を知っている方には、ちょっと気持ち悪くないですか? ※ 以下はカーネル法を知っている方向けのつぶやきです。 上記の例は、データの配置にあわせて、うまいこと z 軸方向の変形をしているのでうまくいっているのですが、カーネル法には、データの配置にあわせてうまいこと変

    機械学習におけるカーネル法について - めもめも
  • TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも

    何の話かというと TensorFlow Tutorialの最初に登場する「MNIST For ML Beginners」では、次の方針で手書き文字の分類器を作成しています。(今の段階では、下記が何を言ってるのか分からなくても大丈夫です。) ・28x28ピクセルの手書き文字画像を各ピクセルの濃度を並べた784次元ベクトルと見なす。 ・784次元ベクトル空間を10箇所に分類する線形の多項分類器を用意する。 ・多項分類器の出力値をsoftmax関数に入れて、784次元空間の各点について、「0」〜「9」のそれぞれの文字である確率を定義する。 ・上記の定義の下で、トレーニングセットが得られる確率を最大にするよう、線形多項分類器のパラメーターを調整する。 これが一体何を言ってるのか・・・ということを数学的に理解していただくことが目標です。今回は、下準備として、より単純化したデータで上記と同じ処理を実装

    TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも
  • 「TensorFlow Tutorialの数学的背景」シリーズの目次 - めもめも

    TensorFlowを使って、実際にコードを動かしながら、DeepLearningの仕組みを段階的に学んでいきましょう。 目次 ・No.1 TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) 平面上の2種類のデータをロジスティック回帰で直線的に分類するという、機械学習の基礎を説明します。 ・No.2 TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その2) 線形多項分類器とソフトマックス関数で、3種類以上のデータを分類する方法を説明します。 ・No.3 TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その1) No.1で説明した問題に対して、もっとも単純なニューラルネットワークを適用して、複雑な境界を持つ分類を実現します

    「TensorFlow Tutorialの数学的背景」シリーズの目次 - めもめも
  • 「ITエンジニアのための機械学習理論入門」が発売されます。 - めもめも

    gihyo.jp 表題の書籍が技術評論社より発売されることになりました。 書の内容をまとめるにあたっては、国立情報学研究所「トップエスイー」の有志による勉強会で行った議論から、数多くのヒントをいただきました。同勉強会に参加いただいた方々に改めて感謝します。「ITエンジニアのための」と題されていますが、機械学習に興味のある方、これから機械学習を勉強してみたいという方であれば、どなたでも楽しんでいただける内容に仕上げることができました。 Amazonで予約が開始されていますが、参考として、「はじめに」「書が対象とする読者」「各章概要」を公開しておきます。 はじめに 「機械学習」にかかわるITエンジニアが、予想以上に増えているのかもしれない――そんな疑問を抱いたのは1年ほど前の出来事でした。「データサイエンス」や「ディープラーニング」、果ては「人工知能」まで、メディア好みのバズワードが溢れる

    「ITエンジニアのための機械学習理論入門」が発売されます。 - めもめも
  • 「Docker実践入門 ―― Linuxコンテナ技術の基礎から応用まで」が完成しました - めもめも

    表題の書籍が技術評論社より出版されることになりました。2015/9/26より一般販売開始予定です。執筆にご協力いただいた方々に改めてお礼申し上げます。 gihyo.jp 参考として、「はじめに」と「各章概要」を下記に引用しておきます。Dockerの基礎をしっかりと足固めしていただくための書籍です。 はじめに お待たせしました! 「Dockerを使って何かを始めたい」「Dockerでコンテナーは起動したけど中のしくみがよくわからない」 ── そんなあなたに向けたDockerの入門書がようやく完成しました。「コンテナーだから軽くて便利」「アプリケーションの可搬性が高まる」など、さまざまなうわさ話を耳にするDockerですが、まずは書に目を通して、その技術的な特徴、そして、その背後にある「思想」を理解してください。 Dockerは、アプリケーションの実行に必要なファイルをすべてまとめた「コンテ

    「Docker実践入門 ―― Linuxコンテナ技術の基礎から応用まで」が完成しました - めもめも
  • 「Rプログラミング入門」をPythonで書き直す - めもめも

    何の話かというと RStudioではじめるRプログラミング入門 作者: Garrett Grolemund,大橋真也,長尾高弘出版社/メーカー: オライリージャパン発売日: 2015/03/25メディア: 大型この商品を含むブログを見る 某編集長から上記の書籍が送られてきて、「これは、次はRのを書けという指示か????」と勘ぐってみたものの、筆者はPython派なので、「これと同じことは全部Pythonでもできるんだよー」と言いたくなって、このエントリーを書き始めた次第です。ちなみに、この、Rの入門書としてはよくできているので、これのPython版ができたら、それはそれで役に立つ気もします。 なお、このエントリーでは、あくまでコードの部分だけを書き直して、RとPythonの差異についての説明だけを行ないます。コードそのものの説明については、上記の書籍をご購入ください。 環境準備 IP

    「Rプログラミング入門」をPythonで書き直す - めもめも
  • Dockerイメージのレイヤー構造について - めもめも

    何の話かというと Dockerイメージは複数のレイヤーが重なった形になっています。このあたりを内部構造とあわせて解説します。前提の環境は、CentOS7です。(つまり、ローカルのイメージ管理は、dm-thinが前提。) # rpm -q docker docker-0.11.1-22.el7.centos.x86_64 ローカルにイメージをpullする時の動作 まず、ローカルのイメージをすべて消してキレイな体にしておきます。 # systemctl stop docker.service # rm -rf /var/lib/docker/* # systemctl start docker.serviceCentOSの公式イメージをpullします。この時、4つのイメージ(b1bd49907d55、b157b77b1a65、511136ea3c5a、34e94e67e63a)がダウンロードさ

    Dockerイメージのレイヤー構造について - めもめも
  • Dockerにおけるコンテナのライフサイクル - めもめも

    docker run/stop/start/rm/commit」の各コマンドの役割を整理しておきます。全体像はこんな感じ。 前提環境はこちらです。 # cat /etc/redhat-release Fedora release 20 (Heisenbug) # uname -a Linux fedora20 3.14.6-200.fc20.x86_64 #1 SMP Sun Jun 8 01:21:56 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux # rpm -q docker-io docker-io-1.0.0-1.fc20.x86_64まず、「docker run」で新たなコンテナを起動します。「--name」オプションで名前「web01」を付けておきます。「docker ps」は起動中のコンテナを表示します。 # docker run -it

    Dockerにおけるコンテナのライフサイクル - めもめも
  • Dockerのネットワーク管理とnetnsの関係 - めもめも

    RHEL7RC+EPEL版Dockerの前提で解説します。RHEL7RCを最小構成で入れて、次の手順でDockerを導入します。 # yum -y install bridge-utils net-tools # yum -y install http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.1.noarch.rpm # yum -y install docker-io # systemctl enable docker.serviceDockerが設定するiptablesの内容を見るために(見やすくするために)、firewalldを停止した上でdockerサービスを起動します。 # systemctl stop firewalld.service # systemctl mask firew

    Dockerのネットワーク管理とnetnsの関係 - めもめも
  • PF_PACKETの仕組み - めもめも

    Software Design 2012年6月号の『「生」ネットワークプログラミング』が妙にツボにハマって面白かったのですが、さすがにあのページ数でPF_PACKETを語ると、ついていけない読者も多くて残念かも。 ということで、参考までに概要図を書いてみました。 C言語のソケットプログラミングをなんとなく勉強した方は多いと思います。ソケットは、カーネル内部のネットワークレイヤーとユーザ空間を結びつけるインターフェース(API)なわけですが、カーネル内部では、通常、上図(右側)の流れで受信パケットが処理されていきます。 物理NICが受け取ったパケットは、デバイスドライバがL2プロトコルの処理をして、さらにL3プロトコルの種類(IPv4/IPv6などの違い)の判別まで行います。 判別した結果に基づいて、適切なL3プロトコルのハンドラーが呼び出されて、L3プロトコルの処理をして、さらにL4プロト

    PF_PACKETの仕組み - めもめも
  • 「技術者のための確率統計学」が出版されます - めもめも

    www.shoeisha.co.jp 表題の書籍が翔泳社より出版されることになりました。査読に参加いただいた読者の方を含め、編集・校正・組版・イラストデザインなどなど、書の作成に関わっていただいたすべての方々に改めてお礼を申し上げます。 これでついに(!)「技術者のための基礎解析学」「技術者のための線形代数学」とあわせた三部作が完成となりました。 「昔勉強した気がするけど、もうすっかり忘れちゃった」「あのカタイ数学の世界をもう一度、真面目に振り返りたい」―― そんな読者を想定したこれらの書籍を執筆するきっかけは、やはり昨今の「機械学習ブーム」でした。2015年に出版させていただいた「ITエンジニアのための機械学習理論入門」では、細かな数式を含む計算は、すべて「数学徒の小部屋」と題したコラム枠に押し込めていたのですが、その後、読者の方から「ここに書かれている数式を理解したくて、もう一度、数

    「技術者のための確率統計学」が出版されます - めもめも
  • バックエンドエンジニアのための(かどうかは本当はよく分からないけど、とにかく書いてみる)React 入門(パート1) - めもめも

    何の話かと言うと enakai00.hatenablog.com 上記の記事を自分用のメモ程度の気分で公開したら、思いの外に多数のブックマークやコメントが付いて驚いた上に、「この内容では結局 React やっている人にしか理解できないのでは?」という趣旨のコメントを目にして残念な気持ちになったので、あらためて、React をまったく知らない方を前提とした React の入門記事を書いてみることにしました。特別に「バックエンドエンジニアのため」という要素はないかもしれませんが、私自身がバックエンドの経験の方が長いので、そこはかとなく、バックエンドエンジニアに伝わる雰囲気が醸し出せればよいかなと・・・と思いつつ書き進めていきます。 今回は、まずは、Mac OS を前提として開発環境を用意します。(今後、バックエンドとの連携まで含めた実装をする際は、Google Cloud を使うつもりなので、

    バックエンドエンジニアのための(かどうかは本当はよく分からないけど、とにかく書いてみる)React 入門(パート1) - めもめも
  • 数理最適化と機械学習を比較してみる - めもめも

    数理最適化 Advent Calendar 2022 の記事です。 何の話かと言うと Pythonではじめる数理最適化 ―ケーススタディでモデリングのスキルを身につけよう― 作者:岩永二郎,石原響太,西村直樹,田中一樹オーム社Amazon 上記の書籍の第7章では、次のような問題を取り扱っています。 細かい点は書籍に譲りますが、まず、生データとして次のようなデータが与えられます。 これは、あるショッピングサイトの利用履歴を集計して得られたもので、あるユーザーが同じ商品を閲覧した回数(freq)と、その商品を最後に閲覧したのが何日前か(rcen)の2つの値から、そのユーザーが次にサイトにやってきた時に、再度、その商品を閲覧する確率(prob)を実績ベースで計算したものです。実績ベースのデータなので、ガタガタしたグラフになっていますが、理論的には、 ・freq が大きいほど prob は大きくな

    数理最適化と機械学習を比較してみる - めもめも
  • バックエンドエンジニアのための「React の仕組み」の理解方法 - めもめも

    何の話かと言うと 普段、UI に関わらないバックエンドのコンポーネントを作っているエンジニアフロントエンドのコーディングを理解しようとすると、色々と異次元な世界で混乱する(というか何をやっているのかをすぐに忘れる)ので、バックエンドエンジニアにわかりやすい形で React の仕組み(メンタルモデル)をまとめてみました*1。 ブラウザの画面に描画される個々の要素を「コンポーネント」と呼ぶ。 自分で定義したコンポーネントを HTML タグを使って表示することができる。 コンポーネントは関数として定義する。この関数は、HTML タグで指定された時の属性値を受け取って、コンポーネントを実際に描画する HTML の塊(React 要素)を返す。(つまり、コンポーネントを指定した HTML タグが、コンポーネントからの返り値の React 要素で置換される。) Javascript の関数はクロージ

    バックエンドエンジニアのための「React の仕組み」の理解方法 - めもめも
  • 1