タグ

行列と*programに関するsh19910711のブックマーク (11)

  • Julia + OpenCL (+ ArrayFire)でApple Silicon (M1) のGPGPU - Qiita

    はじめに 前回の記事でMetal.jl を用いたGPGPUの現状について紹介しました。 Apple SiliconのGPUを使えるAPI としては、Metalの他にOpenCLがあります。 Julia にはOpenCLのバインディングであるOpenCL.jlもあり、これを利用してもGPU計算が可能なのでここで紹介します。 さらに、Array Abstractionに関しては、利便性の高いHigh-Level APIであるArrayFireのバインディングのバックエンドとしてOpenCL を利用することでカーネルを書かずにかなり最適化された行列計算が可能になっているので併せて紹介します。 筆者の環境は MacBook Pro (14-inch, 2021) Chip: Apple M1 Pro (14 Core GPU) OS: Monterey 12.4 Julia v1.8.0-beta

    Julia + OpenCL (+ ArrayFire)でApple Silicon (M1) のGPGPU - Qiita
    sh19910711
    sh19910711 2025/06/07
    2022 / "Array Abstractionに関しては、利便性の高いHigh-Level APIであるArrayFireのバインディングのバックエンドとしてOpenCL を利用することでカーネルを書かずにかなり最適化された行列計算が可能"
  • Juliaを使って制限ボルツマンマシンで量子スピン系の基底状態を求める - Qiita

    これまで、Flux.jlの使い方を見てきましたが、この記事では応用例を見ていきます。 これまでの記事は、 Julia機械学習:深層学習フレームワークFlux.jlを使ってみる その1:基Julia機械学習:深層学習フレームワークFlux.jlを使ってみる その2:線形回帰編 Julia機械学習:深層学習フレームワークFlux.jlを使ってみる その3:ニューラルネットとバッチ正規化編 Julia機械学習:Flux.jlで自由自在にオリジナルレイヤーを組んでみよう Flux.jlで量子力学 Julia機械学習:Flux.jlで自由自在にオリジナルレイヤーを組んでみよう 2023年版 などがあります。 今回は、量子スピン系の波動関数を、制限ボルツマンマシン(RBM)で表現し、エネルギーが最小となるような状態(基底状態)を求めることにします。 以下の説明は最終的には制限ボルツマン

    Juliaを使って制限ボルツマンマシンで量子スピン系の基底状態を求める - Qiita
    sh19910711
    sh19910711 2025/05/17
    2023 / "固有値問題はLinearAlgebraパッケージのeigenを用いる / モンテカルロ法を使ってエネルギーを評価する / 行列で表現する代わりに、どのような演算子が含まれているかが記録"
  • 論文『LoRA vs Full Fine-Tuning:An Illusion of Equivalence』LoRA推奨パラメータの示唆

    こんにちは!今回は、最近出ました論文「LoRA vs Full Fine-Tuning: An Illusion of Equivalence」について紹介します。この論文では、LoRA (Low-Rank Adaptation) と Full Fine-Tuning の性能比較だけでなく、内部構造の違いにも焦点を当てた興味深い分析が行われています。この記事では、論文の概要、主要な発見、実験結果、そして実際にLoRAチューニングで使える推奨パラメータ設定について詳しく解説したいと思います。 1. 背景と目的 LoRA とは? LoRA は、事前学習済みの大規模言語モデルに対して、低ランク行列分解を活用したパラメータ効率の高いファインチューニング手法です。従来の Full Fine-Tuning では、全てのモデルパラメータを更新するため、計算コストが高くなります。一方で、LoRA はモデル

    論文『LoRA vs Full Fine-Tuning:An Illusion of Equivalence』LoRA推奨パラメータの示唆
    sh19910711
    sh19910711 2025/05/13
    2024 / "LoRA と Full Fine-Tuning が同等のタスク性能を示す場合でも、内部構造やスペクトル特性に違いがあるのではないかという仮説 / 事前学習モデルの特異ベクトルとは直交する新たな特異ベクトル"
  • 法線を正しい向きにするときなぜ逆転置行列なのか - Qiita

    初めに WebGLなど3DCGを扱うとき、法線に対して座標変換行列の逆転置行列(逆行列にした後、転置行列にする行列)をかけることで法線を正しい向きに修正することがありますが、その内容をかみ砕いた記事です。 なぜ法線の修正が必要か 物体の頂点を移動させるモデル座標変換行列では回転や拡大縮小のスケール変化や平行移動があります。 物体の頂点が移動するとき、法線も正しい向きに修正しなければ、一定の向きのままではライティングなどの処理では陰影が変化せず、不自然なレンダリング結果になってしまうため、頂点の変化に合わせて法線も正しく修正させてあげる必要があります。 法線の修正方法 法線を正しい向きに修正するには、物体に動きが生じたときに法線がどのような影響を受けるかを知ることで適切に処理をすることができます。 回転に関しては、物体が回転すると法線も同じように回転するはずです。そのため、同じ回転成分を法線

    法線を正しい向きにするときなぜ逆転置行列なのか - Qiita
    sh19910711
    sh19910711 2024/06/19
    "物体の頂点を移動させるモデル座標変換行列では回転や拡大縮小のスケール変化や平行移動があり / WebGLなど3DCGを扱うとき、法線に対して座標変換行列の逆転置行列をかけることで法線を正しい向きに修正" 2021
  • ピタゴラス数を生成する行列の対角化、ジョルダン標準形 - Qiita

    稿の環境 稿のために使用した環境は以下となります。 macOS: Sonoma 14.2.1 (chip: Apple M1) Homebrew: 4.2.9 anyenv: 1.1.5 (homebrewにてインストール) Python: 3.12.1 SymPy: 1.12 ピタゴラス数を生成する行列 $a^2+b^2=c^2$を満たす正の整数の組$(a,b,c)$のことをピタゴラス数と言います。その中で,$a,b,c$の最大公約数が$1$であるものを原始ピタゴラス数と言います。$(3,4,5)$に対して次の3つの行列$U,A,D$をかける操作を何度か繰り返すことで、すべての原始ピタゴラス数を生成できます。1 $ A=\displaystyle \left(\begin{matrix}1 & 2 & 2\\2 & 1 & 2\\2 & 2 & 3\end{matrix}\right

    ピタゴラス数を生成する行列の対角化、ジョルダン標準形 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "原始ピタゴラス数: 𝑎^2+𝑏^2=𝑐^2を満たす + 𝑎,𝑏,𝑐の最大公約数が1であるもの / (3,4,5)に対して次の3つの行列𝑈,𝐴,𝐷をかける操作を何度か繰り返すことで、すべての原始ピタゴラス数を生成"
  • 3-SAT問題の量子ウォークによる探索 ~NumPyで実装してみた~ - Qiita

    はじめに 今回は、量子ウォークの探索問題への応用について解説します。最初に量子ウォークの導入も兼ねて1次元の量子ウォークを解説します。続いて、3次元格子上の量子ウォークを定義します。その際、3次元格子上の条件式を命題論理と読み替えることで、条件式を満たす格子点の量子ウォークによる探索が、充足可能性問題(SAT)の解を探索することに等しいことを解説します。数式による解説だけでなく、NumPy による量子ウォークの実装とその計算結果も記載しました。 記事の執筆に当たって、中山茂氏による書籍「量子アルゴリズム」1 を参考にさせていただきました。3-SAT問題への適用もこの書籍で紹介されているテーマです。書籍においてブラ-ケット記法を使って説明されている量子ウォークの計算過程をすべて NumPy で再現するため、記事では状態ベクトルや演算子をすべて行列で表現する工夫をしました。 量子ウォークに

    3-SAT問題の量子ウォークによる探索 ~NumPyで実装してみた~ - Qiita
    sh19910711
    sh19910711 2024/06/18
    "ランダムウォークを量子系へ拡張したもの / 量子ウォークでは、裏と表が重ね合わさった状態にあるコイン(量子コイン)により、右と左の両方を同時に選ぶ" 2021
  • 量子カーネルを用いたSVM (scikit learn + PennyLane) - Qiita

    量子カーネルによるSVM? 量子機械学習の一種である、量子カーネルによるSVMを考えて、実装してみます。 SVMは、データを高次元に射影した上で線形分離を行う機械学習です。 (分離平面を機械学習で決定します) 分離平面は、あるコスト関数$L$が最小になるように決めます。 $L$には入力データの内積(カーネル)の計算が含まれます。 高次元空間での内積を計算するには、その次元数で決まる計算量(一般に大きい)が必要となってしまいます。 そこで、高次元空間への射影の仕方を「高次元空間での内積が既知の公式で求まるもの」に限定してやることで 計算量を大幅にカットします。 よくわからないので、イメージで書きます。 $1+x+x^{2}+x^{3}... +x^{n} = 1/(1-x^{n})$ という公式を知っている人にとっては、左辺を真面目に計算(1項ずつ足す)する必要はなくて、 右辺を計算するほう

    量子カーネルを用いたSVM (scikit learn + PennyLane) - Qiita
    sh19910711
    sh19910711 2024/06/18
    "SVM: データを高次元に射影した上で線形分離を行う / 高次元空間への射影としては、量子ゲート操作で構成できるものだけを考え + 内積計算を簡単に終わらせるために、巧みな量子ゲートの構成と射影測定で代用" 2021
  • ハウスホルダー法による行列三重対角化の可視化 - Qiita

    library("fields") library("stringr") HouseholderMatrix <- function(A, step){ x <- A[, step] y <- rep(0, length(x)) y[1:step] <- A[1:step, step] s <- sqrt(sum(A[setdiff(1:nrow(A), 1:step), step]^2)) y[step+1] <- - s u <- (x - y) / norm(as.matrix(x - y), "F") P <- diag(1, nrow(A)) P <- P - 2 * u %*% t(u) P } plotA <- function(A, step){ image.plot(log10(A[, ncol(A):1]+1), main=paste0("k = ", step), x

    ハウスホルダー法による行列三重対角化の可視化 - Qiita
    sh19910711
    sh19910711 2024/06/15
    "ヤコビ法と似ていて、行列Aにハウスホルダー行列Pを繰り返し両側からかける / PをAの両側からかけることで、元行列の特定の行・列ベクトルに鏡像変換をかけたことになる / QR分解のための手法としても用いられる" 2018
  • SymPy で量子プログラミングを体験してみましょう - Qiita

    はじめまして、こんにちは。OpenQLプロジェクト1の中のひと、です。 記事の対象は、次のような方を想定しております。 量子コンピューターや量子プログラミング2に興味がある方 基礎的なPythonの知識がある方 数式に極度のアレルギーのない方 量子コンピューターの仕組みや計算方法をなんとなく知っている方 (記事の前に、@tsujishin さんの「量子情報科学序論 IBM Qを動かして学ぶ量子コンピュータ」を事前に読んで頂くと、より理解が深まると思います) それでは、始めましょう。よろしくお願いします。 数学・科学計算には欠かせない!?「Mathematica」 皆さんは、Mathematica というソフトウェアをご存知でしょうか。 例えば、何か計算式をプログラムで扱おうとしたときに、一般的なプログラムが数値計算を得意としているのに対して、$x$が含まれる関数式のまま扱うことができる

    SymPy で量子プログラミングを体験してみましょう - Qiita
    sh19910711
    sh19910711 2024/06/11
    "sympy: 数学計算に便利な基礎的な利用用途とは別に、様々な応用計算が標準で含まれ / シミュレーション上の理論的な計算では、qapplyまで行えば、目的が達成することが多い / 観測のためのメソッドも備わって" 2017
  • 行列の積演算で openBLAS cuBLAS を体感する - Qiita

    Basic Linear Algebra Subprograms (BLAS) の 行列の積 演算が、C の for 文で率直に書いたルーチンに比べ、どれ程のものか体感してみる。 背景 深層学習の実装を理解していくにあたり、行列の積演算を高速に行いたくなった。 BLASは 行列の積演算が速いとの話を目にするが、実際に使ってみたことはなかった。 → 今回 BLAS の性能を体感してみる。 BLAS について 下記Webサイトを参考にしています。 ・Basic Linear Algebra Subprograms(Wikipedia) ・BLASの簡単な使い方 ・CUDA Toolkit cuBLAS ・インテル(R) 数値演算ライブラリ(MKL) リファレンス・マニュアル(PDF) openBLAS openBLAS はマルチスレッドにて CPUの全コアを用いた並列演算を行う。 cuBLAS

    行列の積演算で openBLAS cuBLAS を体感する - Qiita
    sh19910711
    sh19910711 2024/05/22
    "深層学習の実装を理解していくにあたり、行列の積演算を高速に行いたくなった / cuBLAS: NVIDIA のグラフィックカードのGPU上で並列演算 / gefoce1050ti な 15K円位のボードでも 率直C版に比べ 500倍以上の差" 2017
  • 行列式を行列のべき乗のトレースたちの多項式として表すこと

    物理のを読んでいたら、 行列についての次のような公式が出てきた: 気になってネットで調べると, 行列のとき、次の関係式が成り立つのだそうだ: 一般の の場合はどうなるのか気になって考えた. 一般に, 次正方行列 は(適当に取った)ユニタリ行列 によって,対角成分が の固有値であるような上三角行列に変換できる: ユニタリ行列の性質から,任意の自然数 に対して 固有多項式はユニタリ変換で不変なので,その 次の項を比較することで次を得る: よって,行列のべき乗のトレースが固有値のニュートン多項式になっていることがわかる.ここで, 変数の 次ニュートン多項式 さて, 変数の 次基対称式 は次のように定義されるのだった: 特に, となることに注意する.行列式もトレースも,ユニタリ変換で上三角化した行列の対角成分だけで決まる.このことから「行列式を行列のべき乗のトレースたちの関数として表す問題」は

    行列式を行列のべき乗のトレースたちの多項式として表すこと
  • 1