技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

アルゴリズム

良さげなライブラリの紹介があったのでメモ

trailhead.salesforce.com 具体的に良いなと思ったのが github.com 使い方はコレ trailhead.salesforce.com 何をやってるかというと、作業単位を一旦保存実行を待って内部キャッシュし、指定したタイミングで一括保存等をトランザクション制御つきでやってく…

LSTM 作ってみた

white-azalea.hatenablog.jp これの続き。 逆伝播の説明を飲み込むのに超絶苦労したわ…数学力無い自分を恨むねぇ(汗 各種勾配は順伝播式を偏微分式計算する必要があり 入力にかかる重み勾配 前の出力にかける勾配 バイアス勾配 各時刻でも以下の勾配を計算…

確率の勉強

確率のキーワード周りを勉強してみる。 一般的な概念として分かりやすい例なので、サイコロを例に考えてみる。 試行と事象 とりえる値をランダムに1回抽出することを 試行 という import numpy as np dice = np.array([1, 2, 3, 4, 5, 6]) # サイコロの取り…

RNN に計算問題を解かせる

white-azalea.hatenablog.jp この辺の続き。 参考は はじめてのディープラーニング2 Pythonで実装する再帰型ニューラルネットワーク,VAE,GAN作者:我妻 幸長SBクリエイティブAmazon 実装したあれこれは後述 RNN が時系列データから次の値を予測するものなら…

RNN を考える

RNN って何かというと Recurrent Neural Network 再起構造型ニューラルネットワークの意味。 再帰構造型の意味って何かというと、前回のニューロンの出力と現在の入力を引数にして「前回の状態を含めて判断する」ニューラルネットのこと。 普通、ニューラル…

DeepLerning らしいDeepLerning実装

white-azalea.hatenablog.jp ここに、Dropout 層とか色々積んでみたというもの。 尚、この記事初めて見た人は突然何のことやらだと思うので、この辺の 2021/2 月あたりから継続してるのでその辺見ると良いかも? white-azalea.hatenablog.jp やってみてわか…

畳み込み層を実装してみる

white-azalea.hatenablog.jp この辺の続き。 畳み込み層とプーリング層、ひいては CNN をしてみる。 前回の im2col 連中を、バッチサイズ/チャンネルとか踏まえて再実装。 超長いので、今回はここから続きを読むリンク…。

過学習対策あれこれ

white-azalea.hatenablog.jp 前回わざと過学習させてみたわけだが、そもそも学習の打ち切りはやたらと難しいハズだ。 あの時はデータセットが 200 位しかないし、ニューロンの数も限られていたといえる。 しかし、現実には大量のデータセットがあるだろうし…

多層ニューラルネットで過学習させてみる

実際過学習がどの程度影響するのかを検証してみる。 ニューロンのひな型は このへん で作ったものを流用。 import numpy as np wb_width = 0.1 # 重みとバイアスの広がり方 eta = 0.01 # 学習係数 class Neuron: def __init__(self, n_upper, n, activation_…

ニューラルネットの弱点

過学習 現在のデータセットに過度に最適化されすぎて、未知のデータに対処できなくなる問題。 これはニューラルネットに限った話でもない。 同一のデータセットを学習させ続けることでも起きるが、ニューラルネットの場合以下のケースがある。 少ないデータ…

JavaScript でニューラルネットを実行

前回のニューラルネットの分類で、アヤメの判別を実装しました。 white-azalea.hatenablog.jp この学習データを JavaScript に持って行って動かそうとしたのが今回。 学習データを取り出そう ニューロンの学習した重みとバイアスを JSON 化して取り出すよう…

ニューラルネット実装

今回やったこと: 入力: 正弦波( )を学習させて、-1 - 1 までの整数食わしたら を返す 中間層: シグモイド関数(3 個) 出力層: 恒等関数 損失関数: 二乗和誤差 最適化アルゴリズム: 勾配降下法 バッチサイズ: 1 で実装する。 まずは学習データその他 import…

ニューラルネットワーク各階層の勾配計算式

勾配計算式 を重み、 をバイアス、 を誤差(損失関数出力)とするとこんな形状で定式化されてる。 この辺はいくつかの書籍見て、ようやっと飲み込めた感じ…。 数式を飲み込むのにはそれなりに時間を要したけど…。 出力層 中間層 結局のところ、 さえ算出できれ…

ReLU 関数とその派生

前回記事の続き。 white-azalea.hatenablog.jp ReLU に関して深掘りして調べてみた。 ReLU は DeepNeuralNetwork に使われる…という知識はあったのだけど、調べてみると関連する活性関数が沢山あった。 ReLU これは分かりやすい import numpy as np def relu…

ニューラルネットワーク周りの関数

具体的には活性関数と呼ばれる連中。 これは入力を受けて結果を応答する関数。 調べてみると結構いっぱいある。 ステップ関数 0 基準で 0 か 1 かという単純なもの。 in python import numpy as np import matplotlib as mpl import matplotlib.pyplot as pl…

全幅探索アルゴリズム

お題はこれ プログラマを育てる脳トレパズル 遊んでおぼえるPythonプログラミング&アルゴリズム作者:増井 敏克発売日: 2020/12/22メディア: 単行本(ソフトカバー) 相変わらず問題だけ読んで、答えの処理を見ずに書いてみた系。 # 9=壁, 1=goal, 0=道 maze …

機械学習で使う数学系関数…つーか数式

相変わらず Puthon 3.7.x (anaconda) で検証。 シグモイド関数 基本形はこんな数式らしい。 グラフにしてみるかね import numpy as np import matplotlib.pyplot as plt import math %matplotlib inline def sigmoid(x): """シグモイド関数""" e = math.e re…

行列使った機械学習で、縦長/横長長方形を判定する

問題 四角が存在して、縦長か横長かを判定する。 正直それだけなら座標見れば一発だが、敢えてベクトル的に考えてみる。 横幅 縦幅 形 80 150 縦長 60 110 縦長 35 130 縦長 160 50 横長 160 20 横長 125 30 横長 これをプロットすると import numpy as np i…

教師あり学習アルゴリズム

pandas とか matplotlib とか色々弄っていく。 インプットはコレ Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎作者: Andreas C. Muller,Sarah Guido,中田秀基出版社/メーカー: オライリージャパン発売日: 2017/05/2…

微分を使ってパラメータを求める(最急降下法or勾配降下法)

お題は、ある不明関数 f にっついて、t という値にもっとも近くパラメータを見つける。 ということで、ちょこちょことやってみた。 計算したい関数はこれで、もっとも 0 に近くなる x を求めたい。 このくらいならふつーに計算すればできそうなものだが、あ…

プログラマ脳を鍛える数学パズル 23

手元にコインがあり、ゲーム参加に 1 枚消費する。勝てば2枚得られる。 これで、24 回ゲームできる手順は何通りあるか? 原文では 24 回戦って、コインが手元にのこる手順と書いてあるくせに、24 回ゲームに参加する手順になってるところが少しもやっと… fr…

ゼロから作るDeepLerning 3章

書籍はこれ ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装作者: 斎藤康毅出版社/メーカー: オライリージャパン発売日: 2016/09/24メディア: 単行本(ソフトカバー)この商品を含むブログ (18件) を見る 3章の内容を超ざっくり説…

プログラマ脳を鍛える数学パズル 22

絡まない糸電話、再起にしてようやっと理解できた def string_phone(N: int) -> int: def pair(n: int) -> int: if n < 2: print(f'pait:{n} -> 1') return 1 ans = 0 for i in range(1, n, 2): ans += pair(i-1) * pair(n - i - 1) print(f'pait:{n} -> {an…

プログラマ脳を鍛える数学パズル 21

少し日が空きましたが別のことやってましたのでご容赦… パスカルの三角形で、0 の数が N 個になるのは何段目か? プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メ…

機械学習と深層学習実習 4 章

※随時更新 ニューロンの実装…ても基礎中の基礎で、ゼロDeep本でも実装したのだけど import math import sys INPUTNO = 2 MAX_INPUTNO = 100 def get_data(e: list) -> int: line_no = 0 for line in sys.stdin: e[line_no] = [float(num) for num in line.sp…

プログラマ脳を鍛える数学パズル 20

「受難のサファードの魔法陣」という問題の回答 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見…

プログラマ脳を鍛える数学パズル 19

続きです。 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見る これを 20 分とか言語によるでし…

プログラマ脳を鍛える数学パズル 18

今日も今日とて。 平方数というのがめんどくさい… from math import sqrt def is_square_pairs(n: int, cuts: list, squares: list) -> bool: prev = cuts[-1] if n == len(cuts): # 全要素が埋まった if (1 + prev) in squares: # 最初の一つ(固定 1)と最…

プログラマ脳を鍛える数学パズル 17

今回はコードをみれば何がしたいか分かるかと プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (11件) を見る…

プログラマ脳を鍛える数学パズル 16

3本の紐があって、1本を正方形、2本を長方形にしたとき…と言う様な問題。 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)この…