2018/10/04 MACHINE LEARNING Meetup KANSAI #3
Juliaを使った開発では、自作パッケージを作り、それらを複数組み合わせながら開発を行うことが多くあります。その時、パッケージ、プロジェクト、環境の意味を理解していないと混乱することがあります。 その時は、https://docs.julialang.org/en/v1/manual/code-loading/を読んで下さい。 プロジェクト環境 (Project environment) プロジェクト環境とは、プロジェクトファイルProject.toml、オプションとしてManifest.tomlが含まれるディレクトリです。Project.tomlには、そのプロジェクト (以下プロジェクトA)が直接依存するパッケージやバージョンの範囲が記述されています。それらのパッケージは、別のパッケージに依存してます。これらを間接的な依存関係と呼びます。 ここで、プロジェクトファイルを含むディレクトリは
こんにちは、門脇宗平(Shuhei Kadowaki)と言います。 GitHubではaviateskというハンドルで活動していて、JuliaのIDE(Juno, julia-vscode)のメンテナなどをやっています。 最近Juliaの型推論システムを借用してJuliaプログラムのソースコードに対する静的な型解析を行うツールの開発[1]をしているのですが、その過程でJuliaの型推論について、その中でも特にisaを使って条件分岐した先のブロックにおける推論ついて少し知見ができたので共有します。 1. Juliaの型推論のflow-sensitivity まず前提としてJuliaの型推論は"flow-sensitive"に行われます。ここで"flow-sensitive"とはどういうことかというと、Juliaはコードをコンパイルするとき、プログラム中の様々なコードに対してその実行コンテクスト
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Juliaで機械学習をする場合、Flux.jlが有名かと思います。一方で、最近では、Lux.jlというパッケージもあります。名前もよく似ていますし使い方も似ている気もしますから、この二つは一体何なのだろうか?と思った方もいるかと思います。 この記事では、Flux.jlの違いを見るとともに、Lux.jlによる関数フィッティングをやってみることにします。 まず、Flux.jlで関数フィッティングをした記事は、Juliaで機械学習:Flux.jlで自由自在にオリジナルレイヤーを組んでみよう 2023年版にありますので、Flux.jlに興味があ
はじめに P計画 前々回,前回にて台車形倒立振子の運動方程式を導出し,シミュレーション,アニメーション,線形化,最適レギュレータの作り方について書き散らして参りました。本記事以後,いよいよ台車形から車輪形の倒立振子に歩みを進め,運動方程式の導出,シミュレーション,アニメーションについて書いていきます。ただし本記事では紙面(?)の都合上,SymPyにおいて力学系をシステマティックに取り扱うsympy.physics.mechanicsというモジュールを用いた運動方程式の導出に焦点を当て,シミュレーションとアニメーションは次回に譲りたいと思います。 まだまだシミュレーションでしかありませんが,ここで制御設計についての理解を深めてから実機の設計・製作,ソフトウェア実装を進め,願わくば年末頃には実際の車輪形倒立振子を立てることができればと夢想しております。 完成したアニメーション 運動方程式を導出
FortranとJuliaはどちらも科学技術計算に強い言語ですが, Juliaのモダンな開発環境や様々な魅力*に惹かれ, Fortranで書かれた既存のコードをJuliaに移植したいと考えている人も多いのではないでしょうか. 移植にあたっては永井さんのFortranから始めるJuliaが参考になります. このようにFortranとJuliaの両方を理解できる人間からすれば手作業で移植する方が安心感がありますが, 時間がかかるので何らかのツールに頼りたくなります. Juliaで書かれた簡単なツールなどもありますが, より使いやすく, より複雑な置換操作に対応したいと考え, ブラウザ上で利用できる移植支援ツールを新たに開発しました. 作っているもの 正規表現や名前付きキャプチャグループ等を用いて, FortranからJuliaへの移植を支援するためのスクリプトを開発しています. 完成には程遠い
11回目のMATLAB記事です。 今回と次回に分けて、「微分方程式」を扱いたいと思います。 微分方程式は、この世に存在する現象(ここでは自然現象や物理現象のこと)を理解、および記述するために、人間が生み出した方法の「一つ」です1。 微分方程式は物理学をはじめ、多くの分野で活躍しています。 例えば、力学においては乗り物の動き、投げたボールの動き等、これらの動きを全て微分方程式で記述します。 他にも、微分方程式の応用例は枚挙にいとまがありません。 本記事は前編として、まず微分方程式の基本事項を簡単に説明します。 その後、微分方程式をMATLABで定義する方法と、MATLABでの解き方を説明します。 微分方程式 微分方程式とは、ある関数 $y$ とその導関数 $y^{'}$ を含む方程式のことです。 例えば、ある方程式が $x$ の関数 $y=y(x)$ と、その導関数 $\frac{dy}{d
最初に 決定木の理論とフルスクラッチ実装とその解説というと、既に使い古された話題の様に感じてしまいますが、今回の記事から派生して、ランダムフォレスト、GBDT、XGboost(LightGBMは扱わないつもり)、因果木、因果フォレスト、ランダムフォレスト-learnerの理論とできる部分はフルスクラッチ実装、めんどくさいものは、理論と解説に抑えて扱っていこうと考えており、そのまず初めとして、決定木自体の理論に触れないことは、できないなと思い、決定木の記事を書こうと思った次第です。(めんどくさくなって書かないパターンも全然あり得るのでご了承ください)他の記事との差別化は、数式を含めた解説と、フルスクラッチ実装のコードと数式を絡めた解説みたいな感じで、初心者に超優しい解説記事みたいな感じで仕上げて見せると、書き始めは思っております。書いていくうちに、初心者に超優しくないじゃんみたいなことになっ
はじめに データサイエンスをする人ならきっと知っているであろう 「データ解析のための統計モデリング」 通称、「みどり本」を読んだ後の結論としては: 何でもアホみたいに線形回帰すな!データの質を考えろ GLMM以上じゃないと実際問題使えないよ ということだと思います。(私見ですが同意者は多いと思う) もちろん、GLMMとして線形回帰を最終的に選択するパターンもあるのでしょうけど、データ解析をする人間のはしくれとしては、GLMMはおさえておきたいところです。 この「みどり本」は名著ですが、実際にコードを手を動かして解析を進めていくと「??」が出てくるので、7章の「一般化線形混合モデル」におけるモヤモヤ点を解説しながら、MATLABで簡単に実装できることをお見せできればと思います。 今回はGLM(一般化線形モデル)まで実装して、次の記事でGLMMまでやります。 統計モデリング データの取得方法
追記 どうやら、せっかく設定したhminは内部でフラグチェックが行われないようです。 solve関数のmaxitersオプションで対応するしかないかもしれません。 また後程検証してみます。 以下は検証が十分ではありません。 ソルバ自体の動作に支障はありませんが、期待通りに動いているかは検証する必要があります。 そのことをご理解いただいたうえでご覧ください。 2018/03/08当時の環境 - Julia 0.6.2 - Sundials 1.2.0 事の発端 ODEモデルのパラメータ推定をしていたら、非線形なモデルだとどうしても途中でソルバがフリーズしてしまう...。 原因はソルバが無限に数値積分のステップを続けてしまうことでした。 数値計算に疎いのでどうしてそんなことになってしまうのかはちゃんとわかっていないのですが、stiffなODEを解こうとすると、数値積分時に細かいステップを刻まな
注意 適当に調べたので,間違っているところがあるかもしれない. TL;DR SageあるいはSageMathとは,Pythonを拡張して実装された計算代数システムの一つで,Mathematicaのフリー版代替を目指して様々なオープンソースソフトウェアとして公開されている計算代数ライブラリを統合した開発環境でもある. 対象の構造と独自の定義 数学で扱われる対象の構造は,プログラミング言語で扱う型の構造(例えば継承と派生.これ以外にも色々と構造があったりするので,十分複雑だけれども…)よりも複雑なので,これを取り扱うためにSageでは独自の型変換機構(cercion system)を実装している. そのため,独自に新しい対象を定義したい場合は,この実装のルールに従って定義すると,型変換機構の恩恵を受けることができる. SageはPythonの拡張なので,もちろんPython言語として実装しても
Light Outゲーム ライツアウトはタカラから発売されているゲームですが。スマホのアプリでも多数あるようです。私はiPhoneの"25bit"というアプリを使ってます。 Light Outと線形代数 Light Outと線形代数は相性が良いようで検索すると多くの記事が見つかります。Qiitaにも以下の記事が見つかりました。 Lights Outを線形代数で解く(まえすとろ) 今回は以下の英語の論文を参考にしてLights OutをSagemathで解いて行こうと思います。ここでは主に5 x 5の大きさを考えますが、プログラム的にはM x Nの一般的なものを考慮して作ります。 Turning Lights Out with Linear Algebra(MARLOW ANDERSON) 順番としては以下のように考えて行きます。 各々のボタンが押されたときにどのライトが反転するのかを定義す
きっかけは、自分が過去に書いたプログラムを整理していると、ベジェ曲線のカーブフィッティング(曲線あてはめ)をするJavaScriptが出てきて、懐かしいなーと思って読んでみたのですが数式が難しすぎて全く理解できませんでした。 何でこんな謎の数式で近似できるねん、昔の俺すげーな。 どうやら最小二乗法を使って近似していたようです、復習がてらPythonで説明したいと思います。 参考書をひっぱりだして勉強しなおしました、ちなみに参考文献は金谷健一先生の「これなら分かる最適化数学―基礎原理から計算手法まで」です。非常に解りやすく解説されている本でオススメです。 最小二乗法とは何なのか? 最小二乗法とは、複雑なデータや関数を近似する代表的な手法で、データ解析における最も重要な基礎となります。 適用範囲は非常に広く、微分可能であればどんな関数も近似が可能という実用性と美しさを兼ね備えた手法です。 例え
この記事はJulia Advent Calendar 2017の21日目の記事です。 やりたいこと SymPyを使って、回路インピーダンスの周波数特性のボード線図を描いてみます。 JuliaにはSymPy.jlというパッケージがあり、Pythonの代数計算ライブラリSymPyを簡単に使うことができます。SymPyをPythonではなくJuliaで実行するメリットは今のところわかりませんが、Juliaで計算した結果と一緒に扱いたい場合には、SymPy.jlを使うと便利だと思っています。 今回の例は簡単な内容ですが、もうちょっと式が複雑になると、SymPyのLambdifyが非常に便利なので、Lambdifyは便利だよ、という意味もあります。 また、実行結果はGitHubのJupyter notebookを参照ください。 RLC直列共振回路 今回考える回路は、RLC直列共振回路です。回路図は以
はじめに SympyはPythonの記号計算パッケージとして有名ですが、ラグランジュ法(ラグランジュの運動方程式)を用いて質点系の運動モデルを導出できる機能についてはあまり知られていないようです。 少し調べてみたところなかなか便利そうなので、この記事では覚え書きも兼ねて、最適制御や強化学習の題材としてよく使われる「倒立振子(Inverted Pendulum)」を例に、運動方程式を導出して線形化するまでの一連の方法について説明してみたいと思います。 なお、この記事ではPython3.6 + Sympy1.2を使用しています。 倒立振子とは 倒立振子は、重心が支点より高い位置にある、つまり逆立ち状態の振り子のことを指します。特に制御工学では、振り子が台車に取り付けられた「台車駆動型倒立振子(CartPole)」を安定化させる問題がよく扱われます。問題設定にはいくつかバリエーションがありますが
環境 Windows 7 Anaconda 4.3.34 python 3.6.4 何の話か 直線群の包絡線の曲線をSympyを使って求め、matplotlibを使って可視化してみたPythonコードを、自分語りに交えて紹介します。 導入 多湖 輝氏のシリーズに「頭の体操」というものがあります。なるほど面白い問題からなぞなぞ、ただの屁理屈まで幅広いひねった問題があったように思います。 例:問「先に家を出て東に向かった兄を追って弟が家を出たが、弟は西に向かった、何故か」答「自転車がある駐車場が西にあるから」 僕が子供のころ父が買っていて読んでいたのですが、そんななかふと気になる問題がありました。 ちょっと具体的な文は忘れたのですが、要約すると 「定規だけ(つまり直線だけ)で円を描け」 というものでした。答えは 正方形を用意し、各辺を細かく等分したメモリを打つ 左下にP、右下にQを置く PとQ
やりたいこと JuliaでSPICEみたいな回路シミュレーションをしてみます。今回はタイトルの通り、RLC直列回路を修正節点法で求めて、一次の後退差分法で演算します。また、修正節点法との比較として閉路解析法でも同じ回路を後退差分法で演算します。 今回の特徴としては、SymPyを使って代数をそのまま計算したところで、Julia+SymPyだと式通りの計算ができるのでなかなか面白いかなと思います。 参考図書 [1] 書籍:電子回路シミュレーション [2] 論文:パワーエレクトロニクスを対象としたリアルタイム・シミュレータに関する研究 上記の2つの参考図書は、SPICEを理解するためには非常に良いと思います。修正節点法に関しては、基本的には[2]の48ページ目くらいに記載の通り計算をしました。また、[1]も非常にわかりやすい書籍だと思います。閉路解析法は、適当に直感で作りました。 閉路解析法の場
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く