1から始める Juliaプログラミング 進藤 裕之(著) 佐藤 建太(著)

 (2020/11/24) 読了。

 

1.動機

 科学技術系の論文、書籍、ブログ等でもJuliaを用いられることが次第に多くなり、今後も技術リサーチの上で必須になってくると考えていた。和書での本格的な初の解説書であり、購入を検討した。

 

2.内容

(目次:出版社Webサイトより)

1.Julia入門
1.1 次世代のプログラミング言語Julia
 1.1.1 Juliaとは
 1.1.2 本書の構成
 1.1.3 なぜJuliaが必要なのか?
1.2 インストール
 1.2.1 REPL
 1.2.2 Jupyter Notebook
 1.2.3 エディタとIDE
1.3 Juliaの情報
 1.3.1 Julia公式ページ
 1.3.2 Juliaのソースコード
 1.3.3 Julia Discourse
 1.3.4 JuliaCon
 1.3.5 JuliaTokyo

2.Juliaの言語機能
2.1 Juliaの基本
 2.1.1 変数
 2.1.2 プリミティブ型
 2.1.3 任意精度演算
 2.1.4 定数
 2.1.5 基本的な演算子
 2.1.6 更新演算子
 2.1.7 複素数
 2.1.8 文字列
 2.1.9 Unicode文字列
 2.1.10 文字列の関数
 2.1.11 正規表現
2.2 制御構文
 2.2.1 条件評価
 2.2.2 短絡評価
 2.2.3 ループ
 2.2.4 try/catch/finally
2.3 関数
 2.3.1 可変長引数
 2.3.2 オプショナル引数
 2.3.3 キーワード引数
 2.3.4 匿名関数
2.4 型
 2.4.1 型の宣言
 2.4.2 型の階層関係
 2.4.3 Nothing型
 2.4.4 複合型
 2.4.5 Union型
 2.4.6 パラメトリック
 2.4.7 パラメトリック型の階層関係
 2.4.8 抽象型のパラメトリック
2.5 コレクション
 2.5.1 タプル
 2.5.2 名前付きタプル
 2.5.3 リスト
 2.5.4 辞書
 2.5.5 集合
 2.5.6 コレクション共通の関数
 2.5.7 コレクションのイテレーション
2.6 多次元配列
 2.6.1 初期化
 2.6.2 基本的な操作
 2.6.3 インデクシング
 2.6.4 多次元配列の演算
 2.6.5 ブロードキャスティング
 2.6.6 map,reduce,filter
 2.6.7 サブ配列
2.7 モジュール
 2.7.1 モジュールの機能
 2.7.2 既存モジュールの利用
 2.7.3 using文の注意点
 2.7.4 新しいモジュールの定義
 2.7.5 モジュールの相対パス指定
 2.7.6 ファイルの分割
 2.7.7 他のモジュールで定義された関数の拡張
2.8 メタプログラミング
 2.8.1 シンボル
 2.8.2 構文木の表現
 2.8.3 構文木の補間
 2.8.4 構文木の評価
 2.8.5 マクロの機能
 2.8.6 標準ライブラリにあるマクロ
 2.8.7 マクロの定義
 2.8.8 識別子の変換規則
2.9 C言語の呼出し
 2.9.1 ccall構文
 2.9.2 ポインタの受渡し
 2.9.3 構造体の受渡し
2.10 外部プログラムの呼出し
 2.10.1 コマンドの作成・実行
 2.10.2 コマンド実行の注意点
 2.10.3 パイプライン処理
 2.10.4 より発展的なコマンドの作成方法
2.11 パッケージ
 2.11.1 パッケージ管理の基本
 2.11.2 プロジェクトのパッケージ管理
 2.11.3 プロジェクトの有効化
 2.11.4 パッケージの作成

3. Juliaライブラリの使い方
3.1 線形代数
 3.1.1 ベクトルの演算
 3.1.2 行列の演算
 3.1.3 行列の種類
 3.1.4 行列分解
 3.1.5 BLAS
3.2 ファイル入出力
 3.2.1 ファイルとストリーム
 3.2.2 シリアライズとデシリアライズ
 3.2.3 JLD2
 3.2.4 JSONファイルの入出力
 3.2.5 XMLファイルの入出力
3.3 他言語の呼出し
 3.3.1 Pythonの呼出し準備
 3.3.2 Python関数の呼出し
 3.3.3 Pythonモジュールの利用
 3.3.4 Rの呼出し準備
 3.3.5 R関数の呼出し
 3.3.6 Rオブジェクトの操作
 3.3.7 REPLのRモード
3.4 ドキュメンテーション
 3.4.1 docstringの読み方
 3.4.2 Markdown
 3.4.3 関数のdocstring
 3.4.4 関数以外のdocstring
 3.4.5 Documenter.jl
 3.4.6 Documenter.jlの使用例
3.5 可視化
 3.5.1 PyPlot.jlのインストール
 3.5.2 基本的なプロット
 3.5.3 プロットの編集
 3.5.4 サブプロットの作成
 3.5.5 オブジェクト指向インタフェース

4.Juliaの高速化
4.1 プロファイリング
 4.1.1 高速化の事前準備
 4.1.2 実行時間の計測
 4.1.3 実行時間のプロファイリング
 4.1.4 メモリ割当てのプロファイリング
4.2 最適化しやすいコード
 4.2.1 コードの書き方による性能差
 4.2.2 コンパイラの概要
 4.2.3 型に不確実性のあるコード
 4.2.4 グローバル変数への参照
 4.2.5 コレクションや構造体での型不確実性
 4.2.6 メモリレイアウト
4.3 メモリ割当ての削減
 4.3.1 配列のメモリ割当て
 4.3.2 配列の再利用
 4.3.3 ブロードキャスティングによるメモリ削減
 4.3.4 特殊な配列型の利用
4.4 コンパイラへのヒント
 4.4.1 境界チェックの省略
 4.4.2 浮動小数点数演算の高速化
 4.4.3 関数のインライン化
 4.4.4 @simdマクロによる並列処理

索引

 

3.感想

コンパクトな書籍ながら、導入~初歩~かゆいところに手が届くところまで記載があり驚きました。juliaをCによって高速化したりpythonやRを呼び出したりとという部分も開発上、過去資産を使っていく上で大事なポイントです。活用させていただきます。

 

機械学習のための確率と統計 (機械学習プロフェッショナルシリーズ) 杉山 将(著)

 (2020/11/23)読了。

1. 動機

杉山先生の「機械学習のための確率と統計」ということで、以前の「イラストで学ぶ機械学習」がわかりやすかった経験から(実際の内容を確認せず)購入。

 

2. 内容

(1)目次

  • 第1章 確率変数と確率分布
  • 第2章 離散型確率分布の例
  • 第3章 連続型確率分布の例
  • 第4章 多次元確率分布の性質
  • 第5章 多次元確率分布の例
  • 第6章 任意の確率分布に従う標本の生成
  • 第7章 独立な確率変数の和の確率分布
  • 第8章 確率不等式
  • 第9章 統計的推定
  • 第10章 仮説検定

コンパクトな小冊子に必要要件を詰め込んだ点ではレファレンスブックとしては良い。

 

一方、出版社のページの説明では対象は「機械学習分野に参入したい技術者・大学生」とあるが、多くの読者の内容への期待は「①参入のための入門」ではないかと思う。しかし、この本は「②参入のための必要要件書」である。概念の導入部分も薄く、定理の証明もなく、参照書籍への誘導もない。(資格試験の出題範囲表を読んでいる感じ。)

 

一度書店で内容を確かめてから、自分の用途と照らし合わせて買うべき、注意が必要な本である。

 

 

(関連書籍)

 

ねこ耳少女の 量子論 萌える最新物理学  竹内 薫 (著)

 (2020/11/22)読了。

1. 動機

竹内薫さん(著)でマンガ???と思い、好奇心で購入。

 

2. 内容

マンガの物理シリーズはこれまでも読んできましたが、恋愛ストーリーという点が(私にとって)新規性ありでした。こんな切り口があったか。。。

物理ネタの恋愛ストーリーとして読むと面白いです。

一方、まじめに物理を勉強しようと思うと本書はスキップしたほうが良いです。
(勉強の一休み向けです。)

 

基幹講座 数学 統計学 中村 和幸 (著)

 (2020/11/22)読了。

 

1.動機

書評で「多変量解析で線形代数が駆使されていて(読みにくい)」旨の記載を読み、自分はかえってそのほうが読みやすいと感じて購入してみた。

2.内容

基本的な項目の核心部分のみをコンパクト(全212頁)に解説。

  • 見直しに良い。
  • 項目を数式で明示的に表示している点が良い。
  • 入門であるが多変量解析やモンテカルロ法クラスタリングに触れている点が良い。
  • 組版がゆったりしているため、読みやすい。
  • 簡潔ながら、各定義が何に使われるか記載されていてイメージが湧きやすい。

授業で先生が行間を解説しながら読むか、行間をある程度埋められる人向け。

一方で項目の詳細、事例、証明は他書で見る必要があり、その参照先が明示されていないことも多いので、入門の人が自習する用途には向かないと思う。

 

(目次)
第1章 データの記述と要約統計量
第2章 統計的推測と確率
第3章 確率変数
第4章 確率分布
第5章 確率変数の独立性と条件付き期待値
第6章 確率変数の変換
第7章 中心極限定理
第8章 サンプリングと統計的推測
第9章 点推定
第10章 区間推定
第11章 検定
第12章 回帰モデル
第13章 多変量解析
第14章 サンプリングとモンテカルロ法

 

 

関連書籍 

Amazon「ブラックフライデー&サイバーマンデー」でのKindle数理本

(2020/11/21)

Twitter側にも書きましたが、

Amazonの「ブラックフライデー&サイバーマンデー」と関連しているのか、電子書籍(Kindle)版の数理関連も50%引になっているものがあるようです。
私の気になるところでは
日本評論社の新井先生の「熱力学の数理」、「フック空間と量子場(上)(下)」等
 https://amzn.to/334lYsZ
裳華房の小林昭七先生の本
 https://amzn.to/3fgjcWu
 さらに基礎数学選書/基礎物理学選書シリーズ
でしょうか。

 

数学セミナー2019年2月号 特集 ランダム行列

(20201120) 特集記事を読了。

ランダム行列の本が入手しづらいため、ちょうど手ごろな本を手にしました。

応用範囲が広いため、こうした特集記事はとても助かります。 

数学セミナー2019年2月号 通巻 688号   ランダム行列

数学セミナー2019年2月号 通巻 688号 ランダム行列

  • 発売日: 2019/01/12
  • メディア: 雑誌
 

 

なるほど統計学

 2020/11/18 読了。

Amazonのレビューの評判がよく、また、同シリーズの「量子力学」も面白かったため購入。

 

どの箇所も丁寧に計算している。

直観的な説明に頼っている部分も多く、それはそれで楽しめる。

 

一方で、分布であったり、自由度であったり天下り的なところもあり、そういった部分は結局別の本で学ぶ必要がある。

 

なるほど統計学

なるほど統計学

  • 作者:村上 雅人
  • 発売日: 2002/12/01
  • メディア: 単行本