MOXBOX

Takami Torao #hazmat #moxbox
  • このエントリーをはてなブックマークに追加

基調のブルーは Čerenkov Radiation を意味するヤバいもの置き場。

Precaution

MOXBOX は日々のプログラミング経験や学習で習得した知識の理解を深めるために自分の理解の範囲で言語化し、必要になったときにいつでも思い出せるようにした上で安全に忘れて次の興味のための余力を脳に作ることを目的としている (従って専門外のことの方が多い)。基本的にノートであるため、時に数式の解法であったり実装アルゴリズムであったり、読書から要点抜粋した箇条書きであったり単なるコードのスニペットであったりと体裁はさまざまである。

このため、理解が及んでない部分には定義の不備、間違いなどが含まれる可能性がある。自分の理解と連動することから必ずしも学術的、時事的に正しい情報を載せていることを保証 (目的と) していない。

MOXBOX は 2017年9月下旬から書き始めた。サイトの Web サーバは Finagle をベースに実装した非同期 I/O サーバである。

Notation

特に明記しない限り \(\log\) の底は \(e\) とする。

最近の更新loading

\(\def\vector#1{\boldsymbol{#1}}\)

論文翻訳: Zab: High-performance broadcast for primary-backup systems

ZooKeeper のプライマリ-バックアップ間でトランザクションのアトミックブロードキャストに使われている ZAB に関する 2011 年の論文。

sentiment_very_satisfied 2021年9月21日(Tue) 2011年の論文 #ZAB #ZooKeeper

Federated Byzantine Agreement

Federated Byzantine Agreement (FBA; 連合ビザンチン合意) は合意に参加する参加者それぞれの信頼に基づくクォーラム (quorum) と呼ばれる部分ネットワークを形成する P2P 向けのコンセンサス機構である。…

sentiment_very_satisfied 2021年9月20日(Mon) #FBA

論文翻訳: Conflict-free Replicated Data Types

因果一貫性を使用する Version Vector のような並行する更新を追跡できるシステムで自動的に競合を解決できるデータ型についての 2011 年の論文。

sentiment_very_satisfied 2021年9月4日(Sat) 2011年の論文 #CRDT

Blockchain: コンセンサス

一般的な分散システムの文脈でのコンセンサスは、一貫性 (consistency) を達成するための役割選出 (リーダー選挙)、合意、同期、競合の解決や調整といったメカニズムを包括的に指した言葉である。…

sentiment_very_satisfied 2021年8月31日(Tue) #Blockchain #Consensus

Version Vector

Version Vector (VV) は並行して発生するイベントの因果関係 (causality, happened-before relation) を追跡するための機構。因果一貫性 (causal consistency) と呼ばれる一貫性モデルにおいて、競合する更新の因果関係を追跡しながら表現するために使用されている。…

sentiment_very_satisfied 2021年8月28日(Sat) #VV #VersionVector

論文翻訳: Scalable and Accurate Causality Tracking for Eventually Consistent Stores

結果整合性を持つ Key-Value ストア間で更新の競合を検出し追跡するための機構である Version Vector を、空間的および時間的に効率化した Dotted Version Vectors (DVV) および Dotted Version Vector Sets (DVVS) に関する 2014 年の論文。…

sentiment_very_satisfied 2021年8月22日(Sun) 2014年の論文 #DVV

論文翻訳: Detection of Mutual Inconsistency in Distributed Systems

バージョンベクトル (version vector) と起点 (origin point) を使用して、特定ファイルの複数のコピーに対して独立して行った操作による相互不整合 (mutual inconsistency) を検出する方法についての 1983 年の論文。…

sentiment_very_satisfied 2021年8月19日(Thu) 1983年の論文 #VersionVector #VV

ビジネス: ブックマークやメモ

edit_note 2021年8月7日(Sat)

論文翻訳: Concise Server-Wide Causality Management for Eventually Consistent Data Stores

ノード論理クロックとキー論理クロックを使用して分散システムにおけるデータ更新の因果関係を追跡するための 2015 年の論文。

sentiment_very_satisfied 2021年7月18日(Sun) 2015年の論文 #BVV

Rust: ベンチマークの計測

sentiment_satisfied 2021年7月16日(Fri) Rust 1.53 #Rust

暗号プリミティブのパフォーマンス比較

edit_note 2021年7月14日(Wed) #RSA #ECDSA #Schnorr #BLS

ゼロ知識証明

ゼロ知識証明 (ZKP; zero-knowledge proof) は、ある命題 (statement) が真であるという証明者 (prover) による主張を、それ以上の情報を明かすことなく検証者 (verifier) が確実に知る (受理する) ことのできるスキームである。…

sentiment_satisfied 2021年7月13日(Tue) #zkp #SNARG #SNARK #zk-SNARK #ゼロ知識証明

Logarithmic Multi-Tier Hash Tree

現実的なストレージに対して効率的な追記特性を持つ、構造の加算的な変化の完全な履歴を保持するリスト構造について説明します。この構造はデータの追加が可能なハッシュツリー (Merkle ツリー) であり、一般的なハッシュツリーと同様に小さなデータ片を用いてデータの破損や改ざんを検証することができます。…

edit_note 2021年7月12日(Mon) #LMTHT

Rust: Profiling

edit_note 2021年7月8日(Thu) Rust 1.48 #Rust

Rust: スレッド間のデータ共有パターン

edit_note 2021年6月24日(Thu) Rust 1.53 #Rust

論文翻訳: The latest gossip on BFT consensus

Tendermint のコンセンサスに関する 2018 年の論文。

sentiment_very_satisfied 2021年4月17日(Sat) 2018年の論文 #Blockchain #Tendermint #BFT

論文翻訳: BzTree: A High-Performance Latch-free Range Index for Non-Volatile Memory

NVM (不揮発性メモリ) 向けデータ構造 BzTree に関する 2018 年の論文。Microsoft US #10599485 特許。

sentiment_very_satisfied 2021年4月11日(Sun) 2018年の論文 #BzTree #B+Tree #NVM #PMwCAS #CAS

PlusCal: 証明アプローチ

このページでは PlusCal を使って記述したシステムが正しいことをどのように証明するかについて説明する。サンプルを実行するための環境セットアップは環境設定と検証の実行を参照。

sentiment_very_satisfied 2021年4月8日(Thu) TLC2 #PlusCal #TLA+

GraalVM: 入門

edit_note 2021年4月4日(Sun) #GraalVM

GraalVM

GraalVM は Java や Scala などの JVM 言語、C/C++ や Rust などの LLVM 言語、および JavaScript や Python のような動的型付言語などに向けた高性能ランタイムである。…

edit_note 2021年4月4日(Sun) #GraalVM

翻訳: PlusCal/TLA+: An Annotated Cheat Sheet

PlusCal と TLA+ のリファレンスとして有用なチートシート。

sentiment_very_satisfied 2021年3月27日(Sat) 2019年の論文 #PlusCal #TLA+

翻訳: The PlusCal Algorithm Language

sentiment_very_satisfied 2021年3月19日(Fri) 2009年の論文 #PlusCal #TLA+

TLA+ & PlusCal

TLA+ (temporal logic of actions plus; 1999年) と PlusCal (2009年) は共に並行処理と分散システム向けに設計された仕様記述言語 (高レベルモデリング言語)。…

sentiment_very_satisfied 2021年3月14日(Sun) TLC2 #TLA+ #TLC #PlusCal

PlusCal: 並行システムと非同期処理

このページでは PlusCal を使ってマルチプロセスやマルチスレッド、それらに伴う非同期処理といった並行処理を記述する方法について説明する。サンプルを実行するための環境セットアップは環境設定と検証の実行を参照。…

sentiment_satisfied 2021年3月9日(Tue) TLC2 #PlusCal #TLA+

PlusCal: 制御構造

このページではいくつかの例を使って PlusCal の基本的な制御構造を説明する。実行環境のセットアップは PlusCal を参照。

sentiment_very_satisfied 2021年3月8日(Mon) TLC2 #PlusCal #TLA+

PlusCal: データ構造と演算子

done 2021年3月8日(Mon) TLC2 #PlusCal #TLA+

翻訳: A PlusCal User's Manual

sentiment_very_satisfied 2021年3月8日(Mon) 2020年の論文 #PlusCal #TLA+

git: 大規模なマージ

想定: あなたのチームはあるリポジトリ Alice 1.x をフォークしていくつかの機能を修正した Bob 1.x を開発している。いままで Alice 側の修正は alice/master ブランチ上の v1.x.y リリースタグを bob/develop にマージすることで取り込んでいた。…

done 2021年3月8日(Mon) #git

英語: 意思伝達のための必須表現

edit_note 2021年2月6日(Sat)

英語

英語のフレーズなどを記述しておくノート。

edit_note 2021年2月6日(Sat)

PlusCal入門1: hello, world

このページでは最初の PlusCal の例として hello, world と表示するプログラムをレビューし、その基本的な記述構造について考える。PlusCal での仕様記述や TLC 実行のための環境設定は環境設定と検証の実行を参照。…

done 2021年2月5日(Fri) TLC2 #TLA+ #TLC

TLA+入門1: TickTack

このページでは最初の TLA+ の例として、システム状態に 0 と 1 を交互にとる TickTack システムについて考える。

sentiment_satisfied 2021年2月5日(Fri) TLC2 #TLA+ #TLC

TLA+入門2: 独立した 2 変数のシステム

このページでは TLA+ の例として時相論理演算子を扱う。

sentiment_satisfied 2021年2月5日(Fri) TLC2 #TLA+ #TLC

翻訳: Summary of TLA+

sentiment_very_satisfied 2021年2月4日(Thu) #TLA+ #cheetsheet

記号論理

記号論理 (symbolic logic) は論理的な推論を数学的記号法を用いて研究する分野。

done 2021年1月30日(Sat)

システム稼働率

システム稼働率 (system availability factor) はシステムに期待できる可用性の指標である。

sentiment_very_satisfied 2021年1月26日(Tue) #稼働率 #AF

WebAssembly

edit_note 2021年1月10日(Sun) #WebAssembly #WASM

wasmer

wasmer は OS やチップセットから隔離された環境で WebAssembly バイナリを実行できる軽量な仮想マシン。

done 2021年1月9日(Sat) wasmer 1.0 #WASM

Rust: How to implement an event loop

edit_note 2021年1月1日(Fri) Rust 1.48 #Rust #async

Rust: Non-blocking I/O programming with mio::Poll

Linux カーネルのシステムコール epoll や FreeBSD (Mac OS) の kqueue、またはより古典的な POSIX 準拠の select や poll システムコールは大量のクライアント接続を効率的に処理するノンブロッキング I/O プログラミングに必要な機能である。…

done 2021年1月1日(Fri) Rust 1.48 mio 0.7 #Rust #async #poll

論文翻訳: Bulletproofs: Short Proofs for Confidential Transactions and More

高速でデータサイズの小さいレンジプルーフ (範囲証明) のゼロ知識証明である Bulletproofs に関する 2018 年の論文。

sentiment_very_satisfied 2020年12月24日(Thu) 2018年の論文 #Bulletproofs #zkp #ゼロ知識証明

Rust: async を使った非同期処理

edit_note 2020年12月17日(Thu) Rust 1.48 #Rust #async

Bumblebees

Bumblebees は互いに非同期メッセージを交換する 2 つのピアアプリケーション向けプロトコル。シンプルな概念と 4 種類のメッセージを使用して、代表的な以下のネットワーク機能を実装することを目的としている。…

edit_note 2020年12月1日(Tue) #Bumblebees

HyperLogLog

HyperLogLog は多重集合 (multiset) における異なりの数問題 (distinct-count problem) を概算するための確率的アルゴリズム。つまり同じ値が複数存在するデータセットから値の種類の数を概算する。…

sentiment_satisfied 2020年11月28日(Sat) #HyperLogLog #Redis #BigData

Bloom Filter

Bloom Filter は、ある要素が集合内に含まれているかを効率的にテストするための確率的データ構造。false positive (偽陽性; 含まれていないのに true となること) を許容するが false negative (偽陰性; 含まれているのに false となること) は発生しない特徴を持つ。…

sentiment_very_satisfied 2020年11月28日(Sat) #BloomFilter

Home-built Computers

done 2020年11月25日(Wed) #Ryzen

論文翻訳: Fast Multiparty Threshold ECDSA with Fast Trustless Setup

sentiment_very_satisfied 2020年10月27日(Tue) 2018年の論文

ポスト量子暗号

ポスト量子暗号 (PQC; post-quantum cryptography) は量子計算耐性を持つ暗号アルゴリズムのこと。現在使用されている暗号アルゴリズムの多くは素因数分解問題 (RSA など)、または離散対数問題 (楕円曲線や BLS など) の困難性に基づいている。…

done 2020年10月25日(Sun) #PQC

ハッシュベース暗号

ハッシュベース暗号 (hash-based cryptography) は素因数分解や離散対数のような数学的な問題の困難性を利用するのではなく、暗号論的ハッシュ関数によって確立されるセキュリティに基づいている。…

sentiment_satisfied 2020年10月22日(Thu) #WOTS #MSS

Mix Network

Mix Network は受信者のみが解読できる暗号でメッセージを秘匿し、さらにランダムに選んだ多段のノードで中継させることでメッセージの発信者や伝達経路と通信内容の両方を秘匿することを目的としたネットワーク。…

sentiment_satisfied 2020年10月20日(Tue) #MixNetwork #OnionRouting #Tor

Kademlia

Kademlia は二分木構造に基づく実用的な分散ハッシュテーブルアルゴリズム。P2P ファイル共有では Gnutella, BitTorrent, IPFS で使用されており、ブロックチェーンではアイディアや PoC として Ethereum 1 や Storj, Dfinity などのノード検索で検討されている。…

sentiment_satisfied 2020年8月30日(Sun) #P2P #DHT #Kademlia

論文翻訳: Kademlia: A Peer-to-peer Information System Based on the XOR Metric

二分探索木に基づき距離関数に XOR を使用する分散ハッシュテーブルアルゴリズム Kademlia に関する 2002 年の論文。ネットワーク全体では二分木の構造だが、個々のノードのルーティングテーブルはその部分木として見ることのできるリスト構造となる。…

sentiment_very_satisfied 2020年8月30日(Sun) 2002年の論文 #P2P #DHT #Kademlia

Chord

Chord は Consistent Hashing に基づく分散ハッシュテーブル。対数メッシュのリンクを内包する論理リングで表される。

sentiment_very_satisfied 2020年8月27日(Thu) #P2P #DHT #Chord

論文翻訳: Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications

Consistent Hashing を使用した分散ハッシュテーブルアルゴリズム Chord に関する 2001 年の論文。2003 年に似た内容で新しい論文 (2) が出ているのでそちらを参照したほうが良いかも知れない。…

sentiment_very_satisfied 2020年8月18日(Tue) 2001年の論文 #P2P #DHT #Chord

Tapestry

Tapestry(2,3) は PRR の論文(1)に基づいた Prefix ルーティングを行う分散ハッシュテーブルルゴリズム。RPP にノードの参加と離脱のアルゴリズムが追加されている。各ノードは SHA-1 を使用した ID (アドレス) が割り当てられ、アプリケーションにもエンドポイント GUID が割り当てられる。…

sentiment_satisfied 2020年8月12日(Wed) #DHT #Tapestry

Peer to Peer

P2P (peer to peer) は対等な動作をする (明確な主従関係を持たない) ノードによるネットワークまたはシステムのモデル。従来のクライアント/サーバシステム (C/S システム) におけるサーバがクライアントに対して一方的にサービスを提供する役割だったのに対して、P2P ではそれぞれのピアが状況に応じてサーバとクライアント両方の役割を持つ。…

edit_note 2020年8月2日(Sun) #P2P

P2P ファイル共有

P2P ファイル共有は P2P ネットワーク技術を使用したファイルの配布と共有を行うサービス、アプリケーションまたはネットワーク。ダウンロードのネットワーク負荷をユーザ側で分散することから低コストでサービスを運営することができるが、一方で、データのマネジメントを行うことができず著作権管理や情報漏えいと言った法的な問題に巻き込まれることも多い。…

done 2020年7月28日(Tue) #P2P

分散ハッシュテーブル

分散データベースにおいて目的とするオブジェクトを効率的に検索するために特定のスキームに基づいてネットワークに配置する方法を分散オブジェクトロケーション/ルーティング (DOLR; decentralized object location and routing) と呼ぶ。…

sentiment_very_satisfied 2020年7月21日(Tue) #P2P #DHT #DOLR #Tapestry

有向非巡回グラフ

DAG (directed acyclic graph; 有向非巡回グラフ) は有向グラフの中でも閉路をもたない (つまり一度通過した頂点にふたたび戻ることはない) 構造を持つグラフ。ソフトウェアの分野ではジョブ管理システムやビルドシステム、ネットワーク問題で扱う。…

edit_note 2020年7月21日(Tue) #DAG

Merkle Tree

マークルツリー (Merkle tree; ハッシュ木) はあるデータセットのハッシュ値を再帰的にハッシュ化することで得られるツリー構造。このツリーのルートにあたるルートハッシュはすべてのノードのハッシュ特性を含んだ固定サイズの値であるため、あとでデータを検証するために保持するのに都合が良い。…

done 2020年7月17日(Fri) #merkletree #hash

非復元ランダムサンプリングにおける公平性

Inverse (逆数) の重み分布に対して ×1,000 を実行してみれば明らかなように、それぞれの要素の選択頻度の分布 (Actual Win Rate) は重みの分布とはかけ離れた挙動となる。…

sentiment_very_satisfied 2020年7月12日(Sun) #RandomSampling #WRS #fairness

InterPlanetary File System

IPFS (InterPlanetary File System) は Protocol Labs 社を中心に開発されている P2P 技術を使用したファイル配信のための分散ストレージおよびそのプロトコルの名称である。…

sentiment_satisfied 2020年7月11日(Sat) IPFS 0.6.0 #P2P #ipfs

読書メモ: Science Research Writing for Non-native Speakers of English

英語が母国語ではない研究者が英語で研究文書を作成するためのガイド本。

done 2020年7月11日(Sat)

\(\chi^2\) 検定

χ² 検定 (chi-square test) は χ² 分布を確率分布とする確率変数 \(\chi^2\) を求めることで行う検定。その利便性によって広く普及している。期待した分布と観測した分布が適合しているかを調べる適合度検定と、2 つの事象が関連しているかを調べる独立性検定がよく利用されている。…

sentiment_very_satisfied 2020年7月10日(Fri) #chisquare

\(F\) 検定

F 検定 (F test) は 2 つの標本の分散 (標準偏差) が異なっているかを測定する統計的仮説検定。代表的な利用例は t 検定の予備検定である。

sentiment_very_satisfied 2020年7月7日(Tue) #ftest

\(t\) 検定

\(t\) 検定 (t-test; スチューデントの t) は正規分布に従う母集団から無作為に抽出した 2 つの標本が互いに異なるかを計測する仮説検定である。母集団の標準偏差が不明な場合は Z 検定の代わりに t 検定を使用する

sentiment_very_satisfied 2020年7月1日(Wed) #ttest

東京都人口統計のデータ

以下の 2 つの CSV ファイルは東京都の人口(推計)-過去の推計-の「次の国勢調査人口が公表されるまでの人口推計」から入手できる (人が読む形式の) Excel 形式の統計表1から抽出した数値をプログラムから利用できる形式で出力したものである (いつ時点のデータかは version カラムを参照)。…

done 2020年6月13日(Sat)

統計的仮説検定

観測値の背景にある母集団の構造を仮定し、観測値の統計からその仮定が受け入れられるか、さもなくば拒否されるかを判断する統計的手法を統計的仮説検定 (statistical hypothesis testing) と呼ぶ。…

sentiment_very_satisfied 2020年6月7日(Sun)

論文翻訳: Fast Generation of Discrete Random Variables

Walker のエイリアス法を改良して正方ヒストグラムを使う方法で高速に重み付きランダムサンプリングを行うアルゴリズムに関する 2004 年の論文。

sentiment_very_satisfied 2020年5月31日(Sun) 2004年の論文 #WeightedRandomSampling #SquareHistogram

ランダムサンプリング

ランダムサンプリング (RS; random sampling) または無作為抽出、乱択とは、ある集合から無作為に要素を選択すること。社会科学分野での統計のために利用されることも多いが、このページではソフトウェアアーキテクチャに焦点を当てている。…

sentiment_very_satisfied 2020年5月29日(Fri) #RandomSampling #WRS #ReservoirSampling

論文翻訳: Weighted Random Sampling (2005; Efraimidis, Spirakis)

重み付きランダムサンプリング (乱択) のアルゴリズムに関する 2005 年の論文。重み付き非復元ランダムサンプリング (weighted random sampling without replacement) に基づいて、開始時点でサイズが未知の母集団から 1 パスでサイズ \(m\) の部分集合を生成することができる。…

sentiment_very_satisfied 2020年5月22日(Fri) 2005年の論文 #WeightedRandomSampling #ReservoirSampling

Extensible Markup Language

edit_note 2020年4月25日(Sat) XML 1.1 #xml

論文翻訳: Efficient and Scalable Multiprocessor Fair Scheduling Using Distributed Weighted Round-Robin

優先度を重みづけされたプロセッサにラウンドロビンでジョブを割り当てるアルゴリズムに関する 2009 年の論文。

sentiment_very_satisfied 2020年4月25日(Sat) 2009年の論文

雑記: 2019 新型コロナウイルス

done 2020年4月3日(Fri) #2019nCoV #COVID19

格子暗号

格子暗号 (lattice-based cryptography) は多次元の格子構造を用いた公開鍵暗号スキーム。証明可能な強力なセキュリティの保証や量子計算耐性、完全準同型暗号へ応用可能といった特性を持っている。…

sentiment_satisfied 2020年4月1日(Wed) #NTRU

読書メモ: スパンプログラム

Karchmer and Wegderson は 1993 年にブール関数を計算する興味深い線形代数モデルスパンプログラム (span program) を発表した。ある関数 \(f(x_1,\ldots,x_n)\) に対するスパンプログラムは、変数 \(x_i\) とその否定 \(\bar{x}_i\) でラベル付けされた行を持つ、ある体 (field) 上の行列として表される (一つの変数が複数の行をラベル付けしてもよい)。…

sentiment_very_satisfied 2020年3月8日(Sun) #SpanProgram #BooleanFunction #BooleanNetwork

準同型暗号

準同型暗号 (homomorphic encryption; HE) は暗号化したデータを復号化せず演算することで、復号化により計算結果を得ることができる暗号スキーム。データの内容を秘匿したままクラウドのようなサードパーティの計算リソースを使用することができる。…

sentiment_very_satisfied 2020年2月29日(Sat) #準同型暗号 #HE #FHE

論文翻訳: On Span Programs

Span Program に関する 1993 年の論文。

edit_note 2020年2月25日(Tue) 1993年の論文 #SP

論文翻訳: DFINITY Technology Overview Series Consensus System

Dfinity のテクニカルオーバービューを記述した 2018 年の論文。公証 (notalization) がブロックの承認を表している? 少し用語の言い替えがある。

edit_note 2020年2月16日(Sun) 2018年の論文 #Blockchain #DFINITY

論文翻訳: Xorshift RNGs

ビット演算のみを使用した非常に高速でコンパクトな Xorshift 擬似乱数生成アルゴリズムに関する 2003 年の論文。著者はキャリー付き乗算の論文にも携わっている。Abstract にあるようにこの論文自体はアイディアの説明であり、良い乱数・悪い乱数で何点かの間違いが指摘されている。…

sentiment_very_satisfied 2020年2月2日(Sun) 2003年の論文 #Xorshift #PRNG

疑似乱数生成

乱数 (random number) はランダムに選択された数のこと。特定の出現パターンを持たず、選択される値が予測できないという性質を持っており、ゲームや科学技術シミュレーション、暗号セキュリティの分野で重要な役割を持っている。…

sentiment_satisfied 2020年2月2日(Sun) #PRNG #MersenneTwister #xorshift

Rust: nom によるパーサー実装

nom は Rust で実装されたパーサコンビネーター、つまり字句解析ライブラリです。テキストデータとしてプログラムのソースコードや DSL (domain specific language) の字句解析を実装できるだけではなく、バイナリデータの解析も前提に設計されています (実際、nom の作者は nom を使って GIF 画像ファイルのデコーダーを実装しています)。…

sentiment_very_satisfied 2020年1月12日(Sun) nom 5.1.0 #Rust #nom

論文翻訳: Graph learning: How humans infer and represent networks

話し言葉や音楽といった人間が認知できる刺激ははグラフ構造で表すことができる。人間がどのように時系列のグラフ構造を認識しているかに関する最近の研究をまとめた 2019 年の論文。

sentiment_very_satisfied 2019年12月26日(Thu) 2019年の論文 #認知科学 #GraphLearning #CognitiveEngineering

離散対数問題と公開鍵暗号

離散対数問題に基づく暗号アルゴリズムは古くから研究されてきたが、公開鍵暗号が世間に広く利用されるようになったのは素因数分解に基づく RSA を待たなければならなかった。しかし旧来の欠点を克服した DSA や、楕円曲線への応用によって、近年では RSA に比べてより高いパフォーマンスを得られるようになった。…

sentiment_very_satisfied 2019年12月15日(Sun) #DLP #DH #ElGamal #DSA #Schnorr

RSA 暗号

RSA 公開鍵暗号 (RSA public-key encryption) は大きな数の素因数分解の困難性を利用した公開鍵暗号。最初の実用的な公開鍵暗号で 2000 年に特許が切れている。より鍵の小さい楕円曲線暗号に置き換えられつつあるが現在においても広く利用されている。…

sentiment_satisfied 2019年12月15日(Sun) #RSA

楕円曲線暗号

楕円曲線は離散対数問題に対して有限体よりも効率的で高いセキュリティを持つ有限体である。これらはどちらも DLP の数式上の循環群 \(G\) として使用できるため、旧来の Diffie-Hellman や ElGamal といったアルゴリズムをほぼそのまま楕円曲線に置き換えることができる。…

sentiment_satisfied 2019年12月15日(Sun) #ECDH #ECC #ECDSA #EdDSA #ed25519 #ed448

公開鍵暗号アルゴリズム

公開鍵は「A から B を計算するのは容易だが B から A を計算するのは困難」といった計算の非対称性を利用した暗号アルゴリズム。公開鍵アルゴリズムを応用した技術として鍵共有、暗号、電子署名が広く使われている。…

edit_note 2019年12月15日(Sun) #DLP #DH #ElGamal #DSA #ECDH #ECC #ECDSA #RSA

論文翻訳: On the Size of Pairing-based Non-interactive Arguments\(\star\)

2016 年の論文。

edit_note 2019年12月1日(Sun) 2016年の論文 #zk-SNARK

論文翻訳: High-speed high-security signatures

楕円曲線暗号アルゴリズムの一種であるエドワーズ曲線デジタル署名 (EdDSA; ed25519, ed448) の速度やセキュリティ優位性に関する 2011 年の論文。

sentiment_very_satisfied 2019年11月25日(Mon) 2011年の論文 #楕円曲線暗号 #EdDSA #Ed25519 #Ed448

論文翻訳: Pinocchio: Nearly Practical Verifiable Computation

edit_note 2019年11月25日(Mon) 2013年の論文 #zk-SNARK #Pinocchio

論文翻訳: Quadratic Span Programs and Succinct NIZKs without PCPs

edit_note 2019年11月25日(Mon) 2013年の論文 #zk-SNARK

RFC翻訳: Edwards-Curve Digital Signature Algorithm (EdDSA)

edit_note 2019年11月10日(Sun) RFC 8032 #楕円曲線暗号 #EdDSA #Ed25519 #Ed448

論文翻訳: Curve25519: new Diffie-Hellman speed records

通常の楕円曲線アルゴリズム (EC) より高速で鍵の小さい Curve25519 を使用した暗号計算に関する 2006 年の論文。

edit_note 2019年11月7日(Thu) 2006年の論文 #楕円曲線暗号 #curve25519 #ed25519

読書メモ: プログラミング言語 Rust 公式ガイド

The Rust Programming Language (日本語版) の邦訳版で ASCII DWANGO から出版されている「プログラミング言語 Rust 公式ガイド」の読書メモ。…

edit_note 2019年11月4日(Mon) Rust 1.38 #Rust

秘密分散共有

秘密分散共有 (secret sharing) または単に秘密分散は秘密情報 \(S\) を \(n\) 個の分散情報に符号化する暗号化アルゴリズムの一種。特に (k,n) しきい値法では \(n\) 個の分散情報のうち任意の \(k\) 個が揃えば元の秘密情報 \(S\) を再構築することができる (\(k\) 個に満たない場合は再構築することができない)。…

sentiment_satisfied 2019年11月3日(Sun) #SecretSharing #VSS

論文翻訳: Compact Multi-Signatures for Smaller Blockchains

マルチ署名、公開鍵集約を使用してブロックチェーンサイズを小さくするための 2018 年の論文。

sentiment_very_satisfied 2019年10月15日(Tue) 2018年の論文 #マルチ署名

群論

集合とその演算や作用によって定まる構造を代数的構造という。ある集合 \(G\) 上の要素 \(a,b \in G\) に対して \(c = a \ast b \in G\) となるような何らかの演算 \(\ast\) が定義されているとき、集合 \(G\) は代数系であり \((G,\ast)\) や単に \(\mathbb{G}\) と表される。…

sentiment_satisfied 2019年10月10日(Thu) #群論

論文翻訳: Aggregate and Verifiably Encrypted Signatures from Bilinear Maps

GAP Diffie-Hellman と双線形写像を使用して BLS 署名派生スキーム、集約署名、ブラインド署名、リング署名を紹介する 2003 年の論文。集約署名は異なるユーザによる異なるメッセージに対する署名を単一の署名に集約する

edit_note 2019年10月8日(Tue) 2003年の論文

翻訳: Introduction to Transaction Management

edit_note 2019年10月7日(Mon)

論文翻訳: Byzantine Finality Gadgets

Polkadot で検討されている、重み付き PoW を使った分岐の発生するコンセンサスにファイナリティ特性を追加するための PoS に基づいたアルゴリズムに関する 2019 年の提示文書。…

edit_note 2019年9月26日(Thu) 2019年の論文 #Blockchain #Polkadot #GRANDPA

Blockchain: Polkadot

done 2019年9月26日(Thu) #polkadot

Blockchain: 用語

edit_note 2019年9月17日(Tue) #Blockchain

鍵共有アルゴリズム

暗号技術における鍵共有 (key exchange) とは、共通の秘匿情報を持たない当事者間で公にされている情報のみを用いて、すべての当事者サイドで通信内容を保護するための共通の鍵を生成する方法。…

done 2019年9月17日(Tue) #鍵共有 #DH #PTP

ペアリング暗号

ペアリング暗号 (pairing-based cryptography) は双線形写像 (bilinear map) の構造を持った暗号アルゴリズム。楕円曲線暗号ではある同一の群 \(G\) 上での写像 \(e:G \times G \to G\) の写像だったが、ペアリングでは 2 つの暗号化群から別の群への写像 \(e:G_1 \times G_2 \to G_T\) という構造を持つ。…

sentiment_very_satisfied 2019年9月16日(Mon) #Pairing #IBE #BLS

論文翻訳: Short Signatures from the Weil Pairing

Gap Diffie-Hellman 群でのヴェイユペアリングを使用することで、一般的な RSA や DSA での署名と比べて同じ強度で短い署名を生成する方法を示す 2001 年の論文。

sentiment_very_satisfied 2019年9月15日(Sun) 2001年の論文 #BLS署名 #GDH

Unihertz Atom

Uniherts Atom は小型軽量で防水、防塵に対応したいわゆるタフネス携帯。

done 2019年9月15日(Sun) #Unihertz #Atom

論文翻訳: Threshold Signatures, Multisignatures and Blind Signatures Based on the Gap-Diffie-Hellman-Group Signature Scheme

(8) の Gap Diffie-Hellman 群を 1) BLS 署名を秘密分散のスキームに拡張したしきい値署名、2) 複数の署名分散から一つの署名を作成するマルチ署名、3) メッセージを秘匿するブラインド署名のそれぞれに応用した 2002 年の論文。…

sentiment_very_satisfied 2019年9月8日(Sun) 2002年の論文 #BLS署名 #署名分散 #しきい値署名 #マルチ署名 #ブラインド署名

論文翻訳: Practical Threshold Signatures

RSA に基づく非インタラクティブな署名分散の方法についての 1999 年の論文。

sentiment_very_satisfied 2019年9月4日(Wed) 2000年の論文 #SignatureSharing #ThresholdSignature #署名分散 #しきい値署名

論文翻訳: Verifiable Random Functions

edit_note 2019年9月2日(Mon) 1999年の論文 #VRF

Verifiable Random Function

VRF (verifiable random function) は公開鍵ペアを使用する暗号学的ハッシュ関数である。VRF 関数は秘密鍵を使ってある入力値に対するハッシュ値を算出することができる。…

sentiment_very_satisfied 2019年9月1日(Sun) #VRF #暗号抽選 #暗号選挙

論文翻訳: HotStuff: BFT Consensus in the Lens of Blockchain

State Machine Replication を行うための BFT 合意アルゴリズム HotStuff に関する 2019 年の論文。ブロックチェーンのような頻繁なリーダー変更を行う環境向けに、通信コストが \(O(n^2)\) から \(O(n)\) となっている。…

sentiment_very_satisfied 2019年8月25日(Sun) 2019年の論文 #HotStuff #LibraBFT

属性ベース暗号

属性ベース暗号 (ABE; attribute-based encryption) は特定の属性を持った対象者のみが情報を復号化できる暗号方式。共通鍵暗号や公開鍵暗号は暗号化/復号化に使用する鍵が 1:1 であるのに対して、それが 1:n や n:1 という特徴を持つ。…

edit_note 2019年8月21日(Wed) #ABE

論文翻訳: Algorand: Scaling Byzantine Agreements for Cryptocurrencies

PoS に VRF (Verifiable Random Function) を組み合わせた選出を行う BFT 合意アルゴリズム Algorand に関する 2017 年の論文。

edit_note 2019年8月20日(Tue) 2017年の論文 #Algorand

Tendermint

edit_note 2019年7月16日(Tue) Tendermint 0.32 #Blockchain #Tendermint

論文翻訳: Practical Byzantine Fault Tolerance

Byzantine Fault Tolerance 合意アルゴリズムを実装面で補強した 1999 年の論文。

sentiment_very_satisfied 2019年7月7日(Sun) 1999年の論文 #PBFT

ビザンチン合意問題

ビザンチン合意問題 (Byzantine agreement problem; ビザンチン将軍問題) は分散システムにおけるサブシステム間の合意の困難さを表す例として挙げられる想定問題である。…

sentiment_very_satisfied 2019年6月24日(Mon) #Byzantine #PBFT

CAP 定理

CAP 定理は分散データベースシステムにおいてネットワーク分断 (partitioning) が発生したときに一貫性 (consistensy) か可用性 (availability) のどちらかしか取ることができないという原則。…

sentiment_satisfied 2019年6月18日(Tue) #CAPTheorem

論文翻訳: Reaching Agreement in the Presence of Faults

ビザンチン故障を含むネットワークでの分散合意が可能な条件についての 1979 年の論文。

sentiment_very_satisfied 2019年6月16日(Sun) 1979年の論文 #BFT

Go: インストール

sentiment_satisfied 2019年6月4日(Tue) #golang #chocolatey

Bitcoin

sentiment_very_satisfied 2019年6月4日(Tue) #Blockchain #Bitcoin #暗号通貨

翻訳: Verifiable Random Functions (VRFs)

Verifiable Random Functions (VRF) は公開鍵をキーとする暗号化ハッシュのバージョンである。秘密鍵の所有者のみがハッシュを算出できるが、公開鍵を持つ人であれば誰でもハッシュの正当性を検証できる。…

edit_note 2019年5月29日(Wed) 2019年 IETF Draft 4 #VRF #IETF

論文翻訳: In Search of an Understandable Consensus Algorithm (Extended Version)

Raft は複製されたログを管理するためのコンセンサスアルゴリズムである。これは (Multi-) Paxosと同等の結果を生み出し Paxos と同程度に効率的だが、その構造は Paxos とは異なる; Raft によって Paxos よりも理解しやすく実用的なシステムを構築するためのより良い基盤が提供される。…

sentiment_very_satisfied 2019年5月20日(Mon) 2014年の論文 #Raft

Java: 公開鍵生成アルゴリズム

Java では KeyPairGenerator クラスを使用して作成することができる。

edit_note 2019年5月2日(Thu) Java 11 #ECDSA

分散システム

sentiment_satisfied 2019年4月25日(Thu)

論文翻訳: Impossibility of Distributed Consensus with One Faulty Process

コンセンサスの問題にはプロセスの非同期システムが含まれており、そのいくつかは信頼性が欠落していることがある。課題は、信頼できるプロセスが 2 値の下で合意することである。本論文では、この課題に対するどのようなプロトコルであっても、たった 1 つでも不完全なプロセスが含まれるのなら終了に達しない可能性を持つことを示している。…

sentiment_very_satisfied 2019年4月25日(Thu) 1985年の論文 #FLP #Reliability

論文翻訳: Skip Graphs

Skip Graph は、要素を格納する分散システムでバランスツリーの全機能を提供する、Skip List に基づく新しい分散データ構造である。要素はいつでも失敗する可能性のある別々のノードに格納される。…

edit_note 2019年4月21日(Sun) 2003年の論文 #SkipGraph

etcd

etcd (etc distributed) は Raft に基づいた分散トランザクションを実装した分散 Key-Value ストア。コンテナ仮想化に特化した軽量 Linux ディストリビューションである CoreOS においてコンテナ間で設定を共有するために実装されたが、移植性の高い golang で実装されているため現在では様々な OS に移植されている。…

edit_note 2019年4月12日(Fri) etc 3.3 #etcd

Java: Transport Layer Security

TLS (transport layer security) は TCP 上で安全な通信を行うためのプロトコル。PKI (public key infrastructure; 公開鍵基盤) に基づいて通信相手を認証し、暗号化されたストリームを通じて改ざん不可能なデータのやり取りを行うことができる。…

sentiment_very_satisfied 2019年3月24日(Sun) Java 11 #SSL #TLS #JSSE

OpenSSL リファレンス

複雑な OpenSSL コマンドを目的別にまとめる。

done 2019年3月21日(Thu) #openssl #ECDSA #X509

メッセージ認証コード

メッセージ認証コード (MAC; message authentication code) はメッセージが発行者によって発行されてから破損や改ざんを受けていないことを検証するために使用する小さなデータ。…

done 2019年3月17日(Sun) Java 11 #MAC #HMAC

クロック同期

edit_note 2019年3月14日(Thu)

ゴシッププロトコル

ゴシッププロトコル (gossip protocol, gossipping) または感染プロトコル (epidemic protocol) はネットワーク上で情報をマルチキャストする方法の一つ。…

sentiment_satisfied 2019年3月12日(Tue) #Gossip

Upper Intermediate S

英語のフレーズなどを記述しておくノート。

edit_note 2019年3月2日(Sat)

Service Provider Interface

SPI (service provider interface) は特定のインターフェースに一致する実装を Java のエコシステムが検出して暗黙的にロードするための機能。Java 6 において正式に導入された。…

done 2019年2月26日(Tue) Java 11

Java: 署名アルゴリズム

Java では Signature クラスを使用して任意のメッセージ (バイナリデータ) に対して電子署名を作成することができる。

done 2019年2月18日(Mon) Java 11 #ECDSA

Java: ハッシュ関数

ハッシュ関数 (hash function)、または Java ではメッセージダイジェスト (message digest) と呼ばれる機能は、ある任意の大きさのバイナリデータから固定長のバイナリを生成するためのアルゴリズムである。…

done 2019年2月18日(Mon) Java 11 #CRC #SHA

プライベート認証局

done 2019年2月14日(Thu)

ハッシュ関数

ハッシュ関数 (hash function) は任意長のビット列をある固定の長さのビット列に変換する関数。\(k\) ビット値への変換を行うハッシュ関数 \(h\) は数学記号で \(h: \{0,1\}^* \to \{0,1\}^k\) と記述することができる。…

done 2019年2月4日(Mon)

基数変換

Base64 はバイナリを 64 種類の文字を使用した文字列に変換する。これは、基数 256 の数列を基数 64 の数列に変換し、それぞれの桁を文字にマッピングすることと等価である。Base58 のような 64 以外の符号化についても、対象とする基数が異なるだけで同じ処理となることが分かるだろう。…

edit_note 2019年2月2日(Sat) #Base64

Rocks DB

Rocks DB は C++ で実装された key-value ストアの組み込み用ライブラリ。key 及び value は任意のバイナリデータが使用できる。メモリや極低レイテンシーな Flash ドライブのような物理ストレージと他コア CPU の実行環境に最適化されている。…

done 2019年1月31日(Thu) #RocksDB

翻訳: The ZILLIQA Technical Whitepaper

既存の暗号通貨及びスマートコントラクトプラットフォームはスケーラビリティの問題を抱えている。すなはち、1秒間に処理できるトランザクションの数が制限されており、通常 10 未満であることが知られている。…

sentiment_very_satisfied 2019年1月28日(Mon) 2017年の論文 #Blockchain #Zilliqa

プレゼンテーション技法

Microsoft de:code 2014 でマイクロソフトのエバンジェリスト西脇さんの「プレゼンの極意」を聞いてからプレゼンの構成や技法について注意深く見るようになった。自分がプレゼンテーションをどう見てるか、どう作っているかについてこのページに記述する。…

sentiment_very_satisfied 2019年1月6日(Sun) #presentation

Blockchain

分散システムにおけるブロックチェーン (blockchain) とは、ビザンチン障害耐性をもつ分散合意アルゴリズムを使ったステートマシンレプリケーション (SRM) として機能する Peer-to-Peer ネットワークである。…

sentiment_very_satisfied 2019年1月5日(Sat) #Blockchain #Bitcoin #Ethereum #DistributedLedger #暗号通貨

Proof of Work

Proof of Work (PoW) は何らかの作業を行ったことを証明することで目的の行為を行う許可が与えられるスキームである。サービス要求者に何らかの作業を強制することで、DoS 攻撃やスパムメールの送信といった短時間で大量の要求を繰り返して発行する悪意的なコンピューティング能力を利用を防止するための実用上の対策である。…

edit_note 2018年12月29日(Sat) #Blockchain #PoW

Practical Byzantine Fault Tolerance

PBFT (practical Byzantine Fault Tolerance) はビザンチン障害耐性をもつ分散合意アルゴリズムの 1 つ。それ以前に提案されていた研究レベルのいくつかの BFT アルゴリズムを改良し、実用的に利用できる水準となった最初の BFT アルゴリズムである。…

done 2018年12月25日(Tue) #PBFT #BFT

Resource Pooing 実装

リソースプーリング (resource pooling) は有限のリソースをプールしアプリケーション内の複数の処理で共有 (resource sharing) する仕組み。一般的に、生成や消滅のコストの高いリソースを初期化を終えた状態で共有、再利用することによるパフォーマンス向上の効果を目的としている。…

edit_note 2018年11月27日(Tue) #ResourcePool

Future 機能

CompletableFuture は Java での非同期プログラミングで使用するクラス。非同期プログラミングはアプリケーションのメインスレッドとは別のスレッドを使用して非ブロッキングにタスクを行うための手段である。…

sentiment_very_satisfied 2018年10月30日(Tue) Java 8

論文翻訳: HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm

大量のデータから要素数を推定するアルゴリズム HyperLogLog に関する 2007 年の論文。

edit_note 2018年10月30日(Tue) 2007年の論文 #HyperLogLog #BigData

HDFS

HDFS (Hadoop distributed file system) は Hadoop で使用されている分散ファイルシステム。データを複数の計算機上に分散配置し、MapReduce を用いて各計算機上で並列分散処理を行うことができる。…

edit_note 2018年10月23日(Tue) #HDFS

Redis:インストール

Redis は C で書かれており、gcc や libc 以外に依存するライブラリを持たないことから公式の Redis Quick Start では最新版をソースからコンパイルすることを薦めている。…

done 2018年10月20日(Sat) Redis 4 #Redis

Lettuce 5

done 2018年10月10日(Wed) Redis 4 Lettuce 5 #Redis #Lettuce

Redis

Redis はデータベースやキャッシュ、メッセージブローカーとして使用することのできるインメモリデータベース。NoSQL DB の一つとしてよく知られている。主に Unix 系の OS を対象としており Windows での実行は難しい。…

done 2018年10月10日(Wed) Redis 4 #Redis

覚知の限界

交渉や駆け引きにおける注意の狭窄と焦点化、またそれらによって引き起こされる合理性の欠ける判断は覚知の限界 (bounded awareness; Bazerman, Chugh, 2005) と呼ばれる。…

sentiment_very_satisfied 2018年9月8日(Sat) #BoundedAwareness

オープンデータセット

edit_note 2018年8月13日(Mon)

畳み込みニューラルネットワーク

畳み込みニューラルネットワーク (convnet, CNN; convolutional neural network) はフィードフォーワード型の深層ニューラルネットワーク (DNN; deep neural network) の一種。…

sentiment_very_satisfied 2018年8月13日(Mon) #ConvNet

Keras: 超解像

超解像 (super resolution) は解像度の低い画像や動画、音声などの信号からより高解像度なバージョンを生成する技術。

done 2018年8月13日(Mon) Python 3.5 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #RSCNN

Keras: CNN中間層フィルタの可視化

edit_note 2018年8月7日(Tue) Python 3.6 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #Conv

Matplotlib TIPS

edit_note 2018年8月6日(Mon) Python 3.5 #matplotlib

論文翻訳: Deep Clustering for Unsupervised Learning of Visual Features

概要: クラスタリングはコンピュータ・ビジョンで広く適用され研究されている教師なし学習方法の一種である。しかし大規模なデータセット上での視覚的特徴量の end-to-end 学習にクラスタリングを適用させる研究は殆ど行われていない。…

sentiment_very_satisfied 2018年7月27日(Fri) 2018年の論文 #DeepCluster #CNN

OpenCV: 画像クラスタリング (PCA/DBSCAN)

edit_note 2018年7月25日(Wed) OpenCV 3 #OpenCV

React:逆引き

edit_note 2018年7月23日(Mon) Node.js 8 React 16 #nodejs #reactjs

Ubuntu18.04: CUDA+Docker セットアップ

Ubuntu 18.04 (bionic beaver) の Docker コンテナ上からホストに設置されている GPU を使用するための環境構築手順を記述する。

sentiment_very_satisfied 2018年7月21日(Sat) Ubuntu 18.04 CUDA 9.0 GTX-1050TI #ubuntu #nvidia #cuda

ローカルサーバ: Cobalt

CPU 処理と常時起動サーバのためのマシン。

done 2018年7月16日(Mon) Ubuntu 18.04 #ubuntu

Keras: 画像生成 (変分オートエンコーダー)

オートエンコーダー (autoencoder, 自動符号化器) はニューラルネットワークを使用した次元削減手法。次元の小さい中間層を設置した多層ニューラルネットワークを、入力と同じデータを出力するように学習することで、中間層部分の出力からより特徴的な表現を少ない次元で得ることができる。…

done 2018年7月14日(Sat) Python 3.5 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #VAE

RPi: 目的別リファレンス

edit_note 2018年7月13日(Fri) #RaspberryPi

Keras: CNN画像分類 (Keras-provided CNN)

Keras は過去のコンテストで優秀な成績を収めた CNN がすぐに利用可能な形で含まれている。ここではこれらの CNN を独自のデータセットで学習して画像分類を行う。

done 2018年7月11日(Wed) Python 3.5 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #Xception

Keras: CNN画像分類 (クラスの可視化)

edit_note 2018年7月10日(Tue) Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #VGG16

Keras: CNN中間層出力の可視化

Keras 2.2 を使用して CNN の中間層がどのような出力を行っているかを可視化する。ここでは学習済みモデルに VGG16 + ImageNet を使用しカワセミの写真のどの部分を特徴としてとらえているかを示すためのヒートマップを作成する。…

sentiment_very_satisfied 2018年7月9日(Mon) Python 3.6 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #Conv

CIFAR-10

CIFAR-10 は 10 種に分類された 32×32 の 60,000 画像からなるデータセット。80 Million Tiny Images から画像認識のために抽出/分類したサブセットである。…

done 2018年7月6日(Fri) Python 3.5 Keras 2.2 #CIFAR10 #CNN

Keras: ImageDataGenerator

Keras 2.2 に付属するデータ拡張と正規化のための多機能前処理ユーティリティ ImageDataGenerator のパラメータごとの効果を整理する。明文化されていない部分については Github のソースを参照する必要がある。…

sentiment_very_satisfied 2018年7月4日(Wed) Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow

Keras: CNN画像分類 (転移学習/Fine Tuning)

転移学習 (transfer learning) はネットワークをゼロから学習させる代わりに、別のタスクで学習したネットワークを元に目的のタスクに最学習させることで、学習のための計算コストや学習に必要なデータセットの数を削減する手法。…

done 2018年7月1日(Sun) Python 3.5 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #VGG16

Keras: CNN画像分類 (Pre-trained CNN Model)

CNN モデルを使用した画像分類スクリプトを作成する。Keras は自分でニューラルネットワークを組み立てデータセットを用意してモデルを構築することもできるが、過去のコンペで優秀な成績を収めたいくつかの CNN がすぐに利用可能な形で含まれていて、推測部分にフォーカスして試すのであればそれらを利用するのが早い。…

sentiment_very_satisfied 2018年6月28日(Thu) Python 3.5 Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #VGG16

Keras: ImageNet分類ラベル一覧

ImageNet データセットに基づく Keras 2.2.0 で利用可能な CNN 学習済みモデルの分類ラベルとその意味 (./keras/models/imagenet_class_index.json に保存されている)。…

edit_note 2018年6月28日(Thu) Keras 2.2 TensorFlow 1.8 #Keras #TensorFlow #VGG16

Lucene: 類似画像検索

AKAZE, ORB, SIFT, SURF などを使用して画像から特徴点とスケール・回転・輝度・Blur 耐性を持つ特徴量を抽出し、それらから Bug of Visual Words (Bag of Features) を使用して全文検索エンジンである Lucene

edit_note 2018年6月27日(Wed) Lucene 6 #Lucene #Lire

JavaVM 仕様読書会ノート

The Java® Virtual Machine Specification Java SE 10 Edition 読書会のノート。Connpass イベント。

edit_note 2018年6月23日(Sat) JavaVM Spec 10 #JVMSpec_Reading

認知バイアス

意思決定において根拠の一つ一つを吟味し合理的な判断を下すコストは決して低いものではない。人は重要ではない判断に対して、過去に経験したり記憶から導き出しやすい材料に基づいて意思決定を行っている。…

sentiment_very_satisfied 2018年6月18日(Mon) #認知バイアス #CognitiveBias

TensorFlow + Keras セットアップ

edit_note 2018年6月13日(Wed) Keras 2.2 TensorFlow 1.8 Python 3.6 #keras #tensorflow

OpenCV: 局所特徴量による類似画像検索/分類

画像の局所特徴量は回転や拡大縮小によって分布が変換しない特徴ベクトルである。つまり特徴量の分布の形が似ている画像は特徴点の配置が似ている画像であることが予想される。この局所特徴量を \(n\) 次元空間上でクラスタ化し、画像ごとに算出した Bag of Visual Words (Bag of Features とも) を使用して画像の類似度を得ることで、撮影されている物体の特徴に基づいた画像検索を行うことを目的とする。…

sentiment_very_satisfied 2018年6月11日(Mon) OpenCV 3 Python 3 #OpenCV

OpenCV: 特徴点/特徴量の抽出

edit_note 2018年6月6日(Wed) OpenCV 3 Python 3 #OpenCV

OpenCV: セットアップ

Windows / Java 環境で OpenCV を使うまでのセットアップ手順。OpenCV の Java バインディングは JAR ファイルとその JNI のネイティブライブラリ (Windows であれば DLL) の 2 ファイルで構成されている。…

done 2018年6月6日(Wed) OpenCV 3 #OpenCV

Julia: 目的別機能

done 2018年6月1日(Fri) Julia 0.6 #julialang

判断の選好逆転

完全に合理的な判断ができているのであれば前提条件が変わらない限り判断が変わることはない。しかし人は問題のとらえ方に流されて異なる判断を行いがちである。

done 2018年5月31日(Thu)

Julia: グラフの描画

PyPlot はプロットライブラリである matplotlib.python のインターフェースを Julia から使えるようにしたパッケージ。ローカルに導入する場合は REPL で PyPlot パッケージを導入しておく。…

done 2018年5月30日(Wed) Julia 0.6 #julialang

OpenCV: 目的別機能

done 2018年5月30日(Wed) OpenCV 3 #OpenCV

OpenCV 3

edit_note 2018年5月28日(Mon) OpenCV 3 #OpenCV

画像収集

機械学習を行う目的で対象物の画像を収集する方法について現時点での手順をまとめておく。処理は大まかに以下のステップを想定しているが:

sentiment_very_satisfied 2018年5月24日(Thu) Node.js 8 ES2015 #Azure #GCP #Flickr #AWS

ボロノイ領域

ボロノイ領域 (Volonoi region) は

edit_note 2018年5月13日(Sun)

意思決定

edit_note 2018年5月12日(Sat)

最大エントロピー法

最大エントロピー法 (maximum entropy model) は前提条件だけで明確な確率分布を導き出せない事象に対して、全体のエントロピーが最大化する方向に確率分布を割り当てる方法。条件が設定されていないのであれば、条件外の余計な偏りを含まない最も不確かなモデルが採用されるべきという考え方に基づく。…

done 2018年5月10日(Thu) #NLP #MaximumEntropy

論文翻訳: A Simple Introduction to Maximum Entropy Models for Natural Language Processing

自然言語処理における多くの問題は、言語学的文脈を用いて言語学的クラスを予測する言語学的分類問題と考えることができる。最大エントロピーモデルは特定の言語学的コンテキストで発生する特定の言語学的クラスの確率を推定するために、様々な文脈的根拠を組み合わせるクリーンな方法を提供する。…

sentiment_very_satisfied 2018年5月8日(Tue) 1997年の論文 #NLP #MaximumEntropy

The Rust Programming Language ノート

The Rust Programming Language 2nd ED. からのメモ書き。

done 2018年4月27日(Fri) Rust 1.25 #Rust

Rust 開発環境

edit_note 2018年4月27日(Fri) Rust 1.25 #Rust

S2 Geometry Library

S2 Geometry Library は球面上の領域を扱うための空間インデクシング (spatial indexing) ライブラリ。主に地球を対象としており、地理データを分割統治や索引付けのためのセル (区画) に分割することを目的としている。…

done 2018年4月20日(Fri) #S2

B+Tree

B-Tree の派生型である B+Tree は、個々のキーの検索効率を下げる代わりに、ある範囲のデータをまとめて取得するケースに適した構造を持つ。B-Tree が中間ノードにもデータエントリを保持していたのに対して、B+Tree では末端の葉にのみエントリを保持し、葉は相互にリンクしたリストの構造を持っている。…

done 2018年4月15日(Sun) #BTree

R-Tree

R-Tree は深さ平衡木 (depth-balanced tree)。葉ノード

edit_note 2018年4月7日(Sat) #RTree

論文翻訳: The Priority R-Tree: A Practically Efficient and Worst-Case Optimal R-Tree

空間インデックス (spatial index) のためのアルゴリズム Priority R-Tree (2004) に関する論文。

edit_note 2018年4月5日(Thu) 2004年の論文 #RTree

論文翻訳: From Word Embeddings To Document Distances

我々はテキスト文書間の新しい距離関数である Word Mover's Distance (WMD) を提示する。我々の研究は文中の局所的な共起から単語の意味的に重要な表現を学習する単語埋め込み (word embedding) の最近の研究結果に基づいている。…

edit_note 2018年3月29日(Thu) 2015年の論文 #NLP #WordMoversDistance #WMD

論文翻訳: PositionRank: An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents

学術論文からキーフレーズを抽出するためのアルゴリズム PositionRank (2017) に関する論文。

edit_note 2018年3月28日(Wed) 2017年の論文 #NLP #PositionRank

可変長整数エンコーディング

いくつかの可変長整数エンコーディング実装について。このページの話題は任意精度整数演算ではなくデータ圧縮の目的で整数値をエンコーディングする方法である。

done 2018年3月26日(Mon)

社会心理学

done 2018年3月19日(Mon)

React

React は SPA (Single Page Application) を開発するためのフレームワーク。JSX を含む JavaScript ソースやその依存ファイルをブラウザが解釈可能な形式にトランスコンパイルし、最終的に一般的な HTTP サーバにデプロイできる形の静的なファイルセットを作成する。…

sentiment_very_satisfied 2018年3月6日(Tue) Node.js 8 React 16 #nodejs #reactjs

英語ノート

英語のフレーズなどを記述しておくノート。

sentiment_very_satisfied 2018年2月27日(Tue)

npm

npm (Node package manager) は JavaScript 用のパッケージマネージャで世界最大級のソフトウェアレジストリ。JavaScript 実行環境である Node.js のデフォルトのパッケージマネージャとして使用されている。…

edit_note 2018年2月23日(Fri) Node.js 8 npm 5 #nodejs #npm

Node.js セットアップ

edit_note 2018年2月22日(Thu) Node.js 8 npm 5 #nodejs #npm

Docker セットアップ

edit_note 2018年2月22日(Thu) Ubuntu 14.04 Docker 17 #Docker

最小経路問題

重み付きグラフ上のある頂点 \(s\) から別の頂点 \(t\) まで到達する経路の中で最もコストの低い経路を求める問題 (重みなしグラフの場合は各辺の重みを 1 とする)。最小シュタイナー木問題において 2 点を使った最小コストの部分グラフを作成することと同じ。…

done 2018年2月20日(Tue) #graphtheory

最小全域木問題

いくつかの頂点と、各頂点の間をつなげるコスト (辺の重み) が定義されており、最も小さいコストですべての頂点をつなぐ最適化問題。コストは 0 より大きく接続不能 (つまりコスト \(\infty\)) も取り得る。…

done 2018年2月18日(Sun) #graphtheory

タグ抽出

タグ抽出 (tag extraction) またはキーワード抽出の目的は文書の内容を代表していると思われる単語を選択する処理。他に自然文の構文構造を素性として重み付けする方法などいくつか過去の研究ある。…

done 2018年2月15日(Thu) JUNG 2.1 #NLP

グラフ理論 序説

グラフ理論 (graph theory) は数学的概念であるグラフを説明する理論。問題を頂点と辺からなるグラフに抽象化し、その離散構造そのものを論議の対象とする。

sentiment_very_satisfied 2018年2月14日(Wed) #graphtheory

論文翻訳: The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries

本稿はテキスト検索と要約の文脈において情報関連性とクエリー関連性を統合する方法を提示する。Maximal Marginal Relevance (MMR) の判定基準は、検索された文書の順位を変更したり、テキスト要約のための適切な一節を選択する際に、クエリーの関連性を維持しながら冗長性を減らすことを目的としている。…

sentiment_very_satisfied 2018年2月12日(Mon) 1998年の論文 #NLP #MMR

コサイン類似度

ベクトル空間モデル (vector space model)、または単語ベクトルモデル (term vector model) はテキスト文書やそれに類似する任意のオブジェクトを識別子のベクトルとして表現するための代数空間モデルである。…

sentiment_satisfied 2018年2月8日(Thu)

論文翻訳: LexRank: Graph-based Lexical Centrality as Salience in Text Summarization

我々は推計学的な graph-based のグラフに基づいて自然言語処理におけるテキスト単位の相対的重要度を算出する方法を導入し、テキスト要約 (TS; text summarization) 問題でこの手法をテストする。…

edit_note 2018年2月1日(Thu) 2004年の論文 #NLP #LexRank

自動要約

自動要約 (auto summalization) または文書要約は文書の要約を作成することを目的としたテキスト短縮の処理。対象とする文書が一つの場合を単一文書要約、特定の文書セットを要約する場合を複数文書要約と呼ぶ。…

sentiment_very_satisfied 2018年2月1日(Thu) JUNG 2.1 #NLP

論文翻訳: TextRank: Bringing Order into Texts

この論文ではテキスト処理において graph-based ランキングモデルである TextRank を導入し、このモデルが自然言語アプリケーションにおいて有効に機能するかを示す。特に、キーワード抽出と文抽出の 2 つの革新的な教師なし学習の方法を提案し、得られた結果が既存のベンチマークで過去に公表された結果と適合することを示す。…

sentiment_very_satisfied 2018年2月1日(Thu) 2004年の論文 #NLP #TextRank

Holt-Winters 法

ホルト-ウィンターズ法 (Holt-Winters method) は指数平滑化法における時系列の変動にトレンドと季節変動を追加し、それぞれの指数平滑の重ね合わせを期待値として算出する方法。…

sentiment_satisfied 2018年1月31日(Wed) #HoltWinters

行動経済学

edit_note 2018年1月28日(Sun)

指数平滑化法

指数平滑化法 (exponential smoothing) は時系列データを平滑化する代表的な時系列分析手法。観測値の中でより新しいデータに大きな重みを設定し、過去になるほど指数関数的に重みを減少させた期待値 (移動平均) を算出する。…

done 2018年1月22日(Mon)

Julia 言語の特徴

sentiment_satisfied 2018年1月16日(Tue) Julia 0.6.2 #julialang

Jupyter Notebook

Jupyter Notebook はライブコード、方程式、視覚化、テキストを含むドキュメントを作成して共有できるオープンソースの Web アプリケーション。データのクリーニングと変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などを目的として使用される。…

edit_note 2018年1月5日(Fri) Jupyter Notebook 4.4.0 #jupyternotebook

Python 3 セットアップ

この記述では Python 3 を使用して virtualenv で環境を切り替え pip でライブラリの管理を行うことをゴールとする。

edit_note 2017年12月16日(Sat) Windows 10 Ubuntu 16.04 #python

Chainer セットアップ

Chainer はニューラルネットワークを記述するためのフレームワーク。既存の命令型フレームワークよりも "Define and Run" で柔軟性を重視しており宣言的にネットワークを記述することができる。…

done 2017年12月16日(Sat) Ubuntu 16.04 Chariner 3.2 CuPy 2.2 #chainer

メタプログラミング

Julia はコードを AST (abstract syntax tree; 抽象構文木) として評価する機能を持っている。ここでの評価とはコード上に AST を展開し実行することを意味する。…

sentiment_satisfied 2017年12月12日(Tue) Julia 0.6.2 #julialang

MXNet セットアップ

Apache MXNet は高速でスケーラブルな機械学習フレームワーク。Gluon という高レベル API が付属しており AWS が正式にサポートしている。

edit_note 2017年12月12日(Tue) mxnet 0.9.3a Scala 2.11 Windows 10 Ubuntu 16.04 #mxnet

word2vec

word2vec は与えられた系列における節の位置関係に基づいて、節の特徴ベクトル (分散表現; word embedding) を作成するアルゴリズム。2 層のニューラルネットワークで構成され、自然言語処理において単語の特徴ベクトルを作成するために利用される。…

edit_note 2017年12月2日(Sat) #word2vec

多層パーセプトロン

多層パーセプトロン (MLP; multilayer perceptron) または Feedforward Neural Network, Deep Feedforward Network は典型的な深層機械学習のためのネットワークモデル。…

edit_note 2017年12月1日(Fri) #MLP #DNN #deeplearning

Recurrent Neural Network

Recurrent Neural Network (RNN; 再帰型ニューラルネットワーク) は時系列の情報パターンを認識するように設計されたニューラルネットワーク。自然言語処理、遺伝子、センサーデータ、株式など、データのシーケンスを節に分解して時系列として扱うことができるデータを対象としている。…

edit_note 2017年12月1日(Fri) #RNN

React Native

React Native

edit_note 2017年11月30日(Thu) React Native 0.49

Google Fusion Tables

Google Fusion Tables は Google が提供するデータベース。

edit_note 2017年11月25日(Sat) Fusion Tables API v2

Fusion Tables Client API for Java/Scala

Java やその他の JavaVM 言語は Maven, Gradle, sbt などのビルドツールを利用して Maven リポジトリの Fusion Tables API のクライアントライブラリを利用するのが早いだろう。…

sentiment_very_satisfied 2017年11月25日(Sat) Fusion Tables API v2 Drive API v3 Java 8 Scala 2.12

MXBean

edit_note 2017年11月23日(Thu) Java 9 #MXBean

通知

Service Worker はブラウザネイティブと同じ UI でユーザに通知を行うことができる。通知方法には 2 種類あり、ユーザがアプリを起動していないときでもローカルで起動しているアプリからユーザに通知を行う方法。…

edit_note 2017年11月22日(Wed) W3C Service Workers Nightly Chrome 61 #ServiceWorker

キャッシュ制御

Service Worker の目的の一つはキャッシュ制御によるサイトの高速化である。ブラウザのキャッシュをサイト実装者が詳細に制御することで、動的に変化しないコンテンツ (HTML, CSS, JS, 画像等) をデバイスローカルにキャッシュし Web アプリケーションの表示を高速化する。…

done 2017年11月22日(Wed) W3C Service Workers Nightly Chrome 61 #ServiceWorker

インストール

edit_note 2017年11月20日(Mon) W3C Service Workers Nightly Chrome 61

Service Worker

サービスワーカー (service worker) はクライアント (ブラウザ) のバックグランドで実行される JavaScript 処理。HTML を操作するユーザインターフェースのスクリプトとは別のコンテキストで動作する。…

sentiment_satisfied 2017年11月19日(Sun) W3C Service Workers Nightly Chrome 61 #ServiceWorker

メルカトル図法

メルカトル図法 (Mercator projection) またはメルカトル投影は円筒投影法を用いて球体表面の 2 次元座標を \(x\),\(y\) 座標の平面に投影する方法。ここでは地球上の地理の投影について述べている。…

sentiment_satisfied 2017年11月16日(Thu)

Getting Started with Progressive Web Apps

Progressive Web Apps (PWA) は Google が開発したスマートフォン/タブレット向けのアプリケーションアーキテクチャ。HTML, JavaScript, CSS で作成できる。…

edit_note 2017年11月16日(Thu)

Latent Dirichlet Allocation

edit_note 2017年10月30日(Mon) #LDA

Note: ビットコインのブロックチェーン

BCCC 2017 で行った bitcon のブロックチェーン技術に関するノート。

sentiment_satisfied 2017年10月27日(Fri) #bitcoin #blockchain

制御構文

edit_note 2017年10月25日(Wed) Java 9 Scala 2.12 Julia 0.6 #java #scala #julialang

データ型

sentiment_satisfied 2017年10月25日(Wed) Java 9 Scala 2.12 Julia 0.6 #java #scala #julialang

タイムゾーン一覧

TimeZone で定義されている通貨の一覧。

edit_note 2017年10月21日(Sat) Java 8 Java 9

文字セット一覧

Charset に定義されている文字セット。

edit_note 2017年10月21日(Sat) Java 8 Java 9

システムプロパティ一覧

System で定義されている通貨の一覧。

edit_note 2017年10月21日(Sat) Java 8 Java 9

ロケール一覧

Locale で定義されている通貨の一覧。

edit_note 2017年10月21日(Sat) Java 8 Java 9

通貨一覧

Currency で定義されている通貨の一覧。

edit_note 2017年10月21日(Sat) Java 8 Java 9

ポアソン分布

単位時間あたりに平均 \(\mu\) 回観測される事象が、単位時間あたりに \(r\) 回観測される確率はポアソン分布 (poison distribution) に従う。\( P(X=r) = \frac{e^{-\lambda} \lambda^r}{r!}, \ \ r=0,1,\ldots\s \)

edit_note 2017年10月19日(Thu)

数値の操作

sentiment_very_satisfied 2017年10月17日(Tue) Java 9 Scala 2.12 Julia 0.6 #java #scala #julialang

文字列の操作

sentiment_very_satisfied 2017年10月17日(Tue) Java 9 Scala 2.12 Julia 0.6 #java #scala #julialang

Julia - 演算子

Julia の特徴的な演算子機能としては、べき乗と逆除算が用意されていること、そして言語機能のレベルで演算子のベクトル化が可能であることが挙げられる。C/C++ や Java などの言語知識があれば多くは読み飛ばしてもかまわない。…

done 2017年10月15日(Sun) Julia 0.6.0 #julialang

データ型・変数・関数

edit_note 2017年10月14日(Sat) Julia 0.6.0 #julialang

スクラップブック

done 2017年10月14日(Sat) Julia 0.6.0 #julialang

相関係数

相関係数 (correlation coefficient) は確率変数 \(X\) に対する別の確率変数 \(Y\) の線形従属性を示す尺度。最も一般的なものは線形相関係数 (linear correlation coefficient) で積率相関係数 (product-moment correlation coefficient)、Peason の \(r\) (Pearson's r) とも呼ばれる。…

sentiment_satisfied 2017年10月14日(Sat)

機械イプシロン

機械イプシロン (machine epsilon) は浮動小数点演算の丸めによって発生する相対誤差の上限を意味する。これはコンピュータ演算を使った数値解析特有のトピックである。macheps, unit roundoff または計算機イプシロンとも呼ばれ記号 \(\epsilon\), \({\bf u}\) で表される。…

done 2017年10月14日(Sat)

有効数字

有効数字 (significant figures of number) は実数の分解能を意味する数字。数値のどの桁までが意味を持つかを表している。

done 2017年10月14日(Sat)

TF-IDF

TF-IDF (term frequency - inverse document frequency) はある単語がコーパス内の文書に対してどれほど重要であるかを示す統計的数値。TF-IDF 値は文書内に単語が出現する回数に比例して増加するが、コーパス内での単語の出現頻度によって相殺されることが多く、一般に頻繁に出現する単語を調整する利点をもつ。…

sentiment_satisfied 2017年10月12日(Thu) #TF-IDF

形態素解析

自然言語処理ではよく単語を文章を構成する「意味を持つ情報」の最小単位として扱っている。ラテン語圏の言語は単語の区切りに空白を使用しているためプログラムでの抽出は比較的容易だが、日本語の場合は文の中から単語を識別し適切に分割する実装が必要となる。…

sentiment_satisfied 2017年10月12日(Thu) Kuromoji #kuromoji #形態素解析

マルコフ連鎖モンテカルロ法

マルコフ連鎖モンテカルロ法 (Markov chain Monte Carlo methods; MCMC 法) は確率分布から疑似乱数サンプリングを行うためのアルゴリズム。ある時点の状態 \(x^{(t)}\) からランダムに採択した次の状態 \(x^{(t+1)}\) へ確率付きで移動することから "マルコフ連鎖", "モンテカルロ法" の名前で呼ばれる。…

edit_note 2017年10月10日(Tue) #MCMC

マルコフ連鎖

時刻やステップの推移で状態空間 \(\{1, 2, \ldots, k\}\) のいずれかの値を持つ確率変数について考える。ある時点 \(t\in(0, 1, \ldots)\) での確率変数を \(x^{(t)}\) とする。…

done 2017年10月10日(Tue)

疑似乱数サンプリング

疑似乱数サンプリング (pseudo-random number sampling) は与えられた確率分布に従う擬似乱数を生成する数値的手法。一般に一様乱数 \(u\) を利用して一様ではない分布のサンプリングを行う。…

edit_note 2017年10月10日(Tue)

ベータ分布

ベータ分布 (beta distribution) は以下の式で表される連続確率分布。確率変数は \(0 \lt x \lt 1\) の範囲を取る。\( P(x; \alpha, \beta) = \frac{x^{\alpha-1}(1-x)^{\beta-1}}{B(\alpha,\beta)}, \,\,\, \alpha \gt 0, \beta\gt 0 \) ここで \(B(\alpha,\beta)\) はベータ関数である。…

done 2017年10月8日(Sun)

不動点反復法

関数の不動点 (fixed-point) とは関数によって自分自身を得る点のこと。つまり \(f(x) = x\) が成り立つ点 \(x\) は関数 (写像) \(f\) の不動点である。

edit_note 2017年10月6日(Fri)

モンティ・ホール問題

1990 年に話題になったとき、著名な数学者を含む多くの人が「同じ確率だから選択を変える必要はない」と答えた問題。最終的な状況を客観視すると、選択可能な箱が 2 つあってそのうちのどちらかが当たりであることから、どちらを選んでも確率は 1/2 に思える。…

sentiment_satisfied 2017年10月5日(Thu)

ベルヌーイ分布

結果が {0, 1}、{true, false}、{OK, NG} といった 2 値しかとりえない独立した事象の試みをベルヌーイ試行 (bernoulli trial) と呼ぶ。これらの結果は統計で扱う便宜上 \(b \in \{0,1\}\) に置き換えて考える。…

done 2017年10月4日(Wed)

カテゴリカル分布

それぞれ独立した確率 \(p_k\) を持つ \(K\) 個の事象 (カテゴリカル変数; categorical variable) が存在し、1 回の独立した試行でそのいずれか一つが観測される離散確率分布をカテゴリカル分布 (categorical distribution) と呼ぶ。…

done 2017年10月2日(Mon)

カイ二乗分布

\(\vector{x} = (x_1, x_2, \cdots, x_k)\) が標準正規分布に従う確率変数であるとき、その自乗和 \( Z = \sum_{i=1}^k x_i^2 \) は自由度 \(k\) のカイ二乗分布に従う (\(\chi_k^2\) と表す)。…

edit_note 2017年10月1日(Sun)

多項分布の推定

事象 \(k \in \{1,2,\cdots,K\}\) がそれぞれ生起確率 \(\vector{p} = (p_1,p_2,\cdots,p_K)\) に従って観測されるとき、標本 \(x=k\) が観測される確率 \(P(k)=p_k\) の分布はカテゴリカル分布に従う。…

sentiment_very_satisfied 2017年10月1日(Sun)

二項分布

試行において 1 が観測される確率 \(p\) のベルヌーイ試行を \(n\) 回行ったとき (あるいは \(n\) 個同時に行ったとき) に 1 が \(x\) 個観測される確率は \(p\) と \(n\) をパラメータとした以下の確率質量関数で表される。…

done 2017年9月30日(Sat)

多項分布

独立した \(K\) 個の事象 \(k \in \{1, 2, \ldots, K\}\) のいずれか一つが観測される確率をそれぞれ \(\vector{p} = (p_1, p_2, \ldots, p_K)\) とする。…

sentiment_satisfied 2017年9月30日(Sat) #multinomial

高速逆二乗根

高速逆二乗根 (fast inverse square root) は浮動小数点と定数を用いて \(\frac{1}{\sqrt{x}}\) を高速に演算する方法。

edit_note 2017年9月29日(Fri)

浮動小数点演算

浮動小数点演算 (floating-point arithmetic) は実数をある範囲の精度で近似した数式表現で行う算術演算のこと。この近似表現を浮動小数点数という。科学技術計算では非常に大きな値や小さな値を扱う代わりに、観測精度の限界から必要な有効数字が保証されていれば十分であることが多い。…

sentiment_satisfied 2017年9月29日(Fri)

Scala による数値演算アルゴリズム

学生の頃に Numerical Recipes in C という多くの実数演算アルゴリズムの載った書籍があった。英語版は 3rd Ed. が出ているようだが日本語版は出ていない。アルゴリズム辞典や数値演算ライブラリを作る気はないのだが系統としてはあの本の方向で行ければ良いと思っている。…

done 2017年9月27日(Wed)

二項分布の推定

事象 \(b \in \{0,1\}\) のベルヌーイ試行で \(b=1\) となる確率を \(p\)、試行回数を \(n\) とした時、1 が \(x\) 回観測される (出た数の合計が \(x\) となる) 確率関数は二項分布 \(P(x;n,p)\) に従う。…

sentiment_very_satisfied 2017年9月18日(Mon)

正規分布の推定

平均 \(\mu\)、分散 \(\sigma^2\) をパラメータとする正規分布 \({\rm Norm}(\mu,\sigma^2)\) にもとづいて確率変数 \(x\) が観測されるとき、その確率密度関数は以下のように表される。…

sentiment_very_satisfied 2017年9月18日(Mon)

最尤推定とMAP推定

ある生起確率 \(\vector{\theta}=(\theta_1, \ldots, \theta_N)\) に基づいてデータ \(\vector{X} = (x_1, x_2, \ldots, x_N)\) が観測されるとき、あるデータ \(\vector{X}\) が観測される確率は \(\vector{p}(\vector{X}|\vector{\theta})\) で表される (条件付き確率)。…

edit_note 2017年9月17日(Sun)

ND4J ユーザガイド

edit_note 2017年9月17日(Sun)

ベータ関数

ベータ関数 (beta function) は以下の積分で定義される特殊関数。\( B(x, y) = B(y, x) = \int_0^1 t^{x-1} (1-t)^{y-1} dt \) またガンマ関数を使用して以下のように表すこともできる。…

done 2017年9月14日(Thu)

ガンマ関数と階乗

ガンマ関数 (gamma function) は 0 または負の整数以外の複素数に対して以下の積分で定義される特殊関数。\( \Gamma(z) = \int_0^\infty t^{z-1} e^{-t} dt \) また漸化式 \(\Gamma(z+1) = z \Gamma(z)\) でも表すことができる。…

sentiment_very_satisfied 2017年9月14日(Thu)

ディリクレ分布

ディリクレ分布 (dirichlet distribution) は独立した事象 \(k \in \{1, 2, \cdots, K\}\) がそれぞれ \(x_k=\alpha_k - 1\) 回観測されたときに各事象の生起確率が \(p_k\) である確率を示す連続した確率密度関数。…

sentiment_very_satisfied 2017年9月10日(Sun)

ラグランジュの未定乗数法

ある関数 \(f(x)\) に条件 \(g(x)=0\) が設定されているとき、未定乗数 \(\lambda\) を導入して \(f(x)\) の極値 (最大値/最小値となる \(x\)) を求める方法。…

done 2017年9月10日(Sun)

usb4j の機能

usb4j は USB デバイスと通信する Java アプリケーションを開発するためのライブラリです。Java の高い移植性を生かしてプラットフォームごとに異なる USB 実装をより抽象化した API で利用することを目的としています。…

edit_note 2009年5月21日(Thu) #usb4j

USB for Java

done 2009年5月21日(Thu) #usb4j

USB for Java

USB for Java は Java から USB デバイスと通信するためのライブラリです。

edit_note 2009年5月6日(Wed) #usb4j

HTTP Sniffer Proxy

Java 製のプロキシ型 HTTP リクエスト/レスポンス Sniffer。クライアントから想定通りのリクエストが出ているか、サーバがきちんと Cookie を返しているかなど、ブラウザのソース表示だけでは分からない通信プロトコルを調査する Web ディベロッパー向けツールです。…

done 2009年4月16日(Thu) #HTTPRroxy

3. 物理プロトコル

sentiment_very_satisfied 2008年10月22日(Wed) #Garmin #GPS

4. リンクプロトコル

done 2008年10月22日(Wed) #Garmin #GPS

2. プロトコル層

edit_note 2008年10月22日(Wed) #Garmin #GPS

Garmin Device Interface Specification

sentiment_very_satisfied 2008年10月22日(Wed) #Garmin #GPS

7. データ型

sentiment_very_satisfied 2008年10月22日(Wed) #Garmin #GPS

5. アプリケーションプロトコルの概要

sentiment_satisfied 2008年10月22日(Wed) #Garmin #GPS

1. 導入

edit_note 2008年10月22日(Wed) #Garmin #GPS

6. アプリケーションプロトコル

sentiment_very_satisfied 2008年10月22日(Wed) #Garmin #GPS

Standard Widget Toolkit

SWT (Standard Widget Toolkit) は IBM が Eclipse 用に開発した GUI ライブラリです。JNI を使用することで昔の Swing で問題となっていたグラフィック描画のボトルネックを回避し、当時の Swing ベースのアプリケーションと比較して格段の速さを誇っていました。…

done 2008年3月22日(Sat) Java 6

Java GUI

現在 Java で利用されている主な GUI (Graphical User Interface) ライブラリは AWT、Swing、SWT の 3 つです。ただし AWT のみによる GUI アプリケーション開発は既にほとんど行われておりません。…

sentiment_very_satisfied 2008年3月22日(Sat) Java 6

SWT レイアウトマネージャ

SWT は AWT とは別に専用のレイアウトマネージャを用意していますが、機能や役割は AWT のそれと同じです。

sentiment_very_satisfied 2008年3月22日(Sat) Java 6

公開鍵暗号 入門

異なる鍵 A と B が存在した場合、A で暗号化したデータが B でしか復号化できないといった特殊な鍵の組み合わせを非対称鍵 (asymmetric key) と言う。公開鍵暗号 (public-key encryption) は非対称鍵の特性を利用して鍵の片方を暗号化用に相手に公開し (公開鍵)、もう片方を復号化用に非公開にしておく (秘密鍵) 方式。…

done 2008年3月22日(Sat)

Secure Sockets Layer

SSL (secure sockets layer) は公開鍵暗号と共通鍵暗号、電子署名、公開鍵証明書などの技術を組み合わせ、暗号化による盗聴防止、改ざん・破損の検出、通信相手の証明などを一度に実現している通信技術。…

done 2008年3月22日(Sat) #SSL

共通鍵暗号

done 2008年3月22日(Sat) #AES

電子署名

電子署名 (digital signature) は文書に対する承認と、文書内容の保障を電子的に付け加えるための暗号技術。公開鍵を使用することにより他人によって行われた署名でないことと、署名された時点から文書内容に変更がないことの 2 点を証明することができる。…

sentiment_satisfied 2008年3月21日(Fri)

Swing

Swing はプラットフォーム依存のウィジェットに頼らず、全てのコンポーネント描画と状態の管理を Java で実装した GUI ライブラリです。元々 AWT の機能の薄さを補うために Sun が Netscape 社 (当時) と共同で開発した Java Foundation Class (JFC) という GUI ライブラリが J2SE 1.2 から標準となりました。…

edit_note 2008年3月19日(Wed) Java 6

Rhino of JavaScript

Rhino は元々 Mozilla プロジェクトで開発されていた Pure Java 製の JavaScript (ECMAScript) エンジンです。JDK 1.1 からの長い歴史を持ち (そして一時期の暗黒時代を経て)、Java SE 6 の Scripting API 実装として標準バンドルされています。…

sentiment_satisfied 2008年3月15日(Sat) Java 6

Jython of Python 2

Jython は動的オブジェクト指向スクリプト言語 Python の Java 実装版です。java.net スクリプトプロジェクトの一つとしてとして開発が進められています。

edit_note 2008年3月15日(Sat) Java 6

Abstract Window Toolkit

AWT (Abstract Window Toolkit) は初期の Java で標準として用意されていた GUI ライブラリです。それまでプラットフォームごとに使い方が異なっていたウィジェット (GUI コンポーネント) を抽象化し、Java から統一した標準 API として使用できるようにしています。…

edit_note 2008年3月15日(Sat) Java 6

システムトレイ

Java SE 6 からシステムトレイ (タスクトレイ) が利用できるようになりました。メール着信のお知らせツール (biff) やウィンドウレスで常駐するアプリケーションで便利な機能です。…

done 2008年3月15日(Sat) Java 6

Berkeley DB

Berkeley DB はカリフォルニア大バークレイ校で開発されたデータベースライブラリ。データベースと言っても RDBMS のように SQL が使用できたり関連モデルで設計されているわけではなく、ファイル上にインデックス付けされたデータ構造をプロシジャ形式のインターフェースを用いて検索、更新出来るライブラリ (Database Manager) です。…

done 2008年3月4日(Tue) Berkeley DB

Scripting for the Java™ Platform

Scripting for the Java™ Platform は JSR 223 で標準化され Java SE 6 から導入されたスクリプト API。文字列や外部ファイルに記述されているスクリプトを Java 上で実行することができる。…

done 2008年3月1日(Sat) Java 6

Solaris 10 for x86 インストール

Solaris 10 8/07 for x86 のダウンロードから起動までの手順を解説する。なお作業は VMWare のゲスト OS として行っているため通常のインストールと異なる部分が若干あるかもしれない。…

sentiment_satisfied 2008年3月1日(Sat) Solaris 10

Solaris 10 セットアップ

導入直後の root ユーザのホームディレクトリは / に設定されているがセキュリティ面でも運用面でもろしくないので変更する。

sentiment_satisfied 2008年3月1日(Sat) Solaris 10

GIF 画像出力

米 Unisys 社が取得していた GIF の LZW 圧縮に関する特許が2004年6月20日に切れ Java SE 6 から GIF への出力がサポートされた。このページでは Java SE 6 の Image I/O を使用してアニメーション GIF を作成する方法について述べる。…

sentiment_very_satisfied 2008年1月27日(Sun) Java 6

Date and Time Formats

done 2007年8月16日(Thu)

XML Path Language (XPath) 2.0

sentiment_very_satisfied 2007年8月14日(Tue)

The Content-MD5 Header Field

edit_note 2006年3月23日(Thu)

The Content-Disposition Header

edit_note 2000年7月5日(Wed)

HTTP State Management Mechanism

edit_note 1999年11月7日(Sun)

The Finger User Information Protocol

edit_note 1999年10月22日(Fri)

The Internet Gopher Protocol

edit_note 1999年10月18日(Mon)

The Internet Gopher Protocol

edit_note 1999年10月18日(Mon)

SIMPLE MAIL TRANSFER PROTOCOL

edit_note 1999年10月9日(Sat)

SIMPLE MAIL TRANSFER PROTOCOL

edit_note 1999年10月9日(Sat)

Echo Protocol

edit_note 1999年8月2日(Mon)

UTF-8, a transformation format of Unicode and ISO 10646

edit_note 1999年7月8日(Thu)

Hypertext Transfer Protocol - HTTP/1.1

sentiment_very_satisfied 1999年6月11日(Fri)

Uniform Resource Locators (URL)

edit_note 1999年3月21日(Sun)
F