技術をかじる猫

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

ニューラルネット の検索結果:

DeepLearning 生成させる学習方法

…画像などの認識を行うニューラルネット。 映像判定とか顔判定等をメインに扱うものなので、極論すると生成には向かないと思われる。 単純な入力→出力型DeepLearning 下書きを読み込んで線画にするAIは予測系ではなくて単純に入力→結果対応をしてると思う。 画像を行列にして食わせて、線画の結果を取得する。 色を付けるのも多分似たようなものかもしれない。 ただしサンプルは相当な量が必要だし、画像となれば学習時間もエグい事になりそう… ちょっと個人で手が出るものでは無いと思われる…

LSTM 作ってみた

…onで実装する再帰型ニューラルネットワーク, VAE, GAN (Machine Learning)作者:我妻 幸長SBクリエイティブAmazon 実装してみた!(つってもだいたい写経になっちゃったけど…) ギザギザしてる波形が学習データ。 黄色線がそこから予測した値。 実行結果はこんな感じ。 でもこれ株価に取り入れようとしたとき、実は誤差が埋まらなかった… これがなぜかと言うと、株価を調べてみるとわかるのだけど、米国株 2020-2021(8月)まではトレンドラインに沿った…

RNN に計算問題を解かせる

…onで実装する再帰型ニューラルネットワーク,VAE,GAN作者:我妻 幸長SBクリエイティブAmazon 実装したあれこれは後述 RNN が時系列データから次の値を予測するものならば、「時系列データ=足し算するべき二つのビット列を指定、予測したい値=足した結果のビット列」で学習させれば、確かに計算器を作成することは可能かもしれない。 この使い方は思いつきませんでした。 これ、次元数増やせばそれだけでかなり複雑な判定とか出せそうな気がします。 例えば入力系統を増やして、オペレー…

RNN を考える

…work 再起構造型ニューラルネットワークの意味。 再帰構造型の意味って何かというと、前回のニューロンの出力と現在の入力を引数にして「前回の状態を含めて判断する」ニューラルネットのこと。 普通、ニューラルネットを扱うとき、活性関数を 学習データを とし、重み バイアス とすると ニューロンの作りは ということになる。 ただしこれはその時点でのデータとしたときの問題で、前の状態が次の状態に影響するようなデータには正常に適用できない。 そこで、RNN ではデータ のある時点のデー…

DeepLerning らしいDeepLerning実装

…ン。 この辺の実装はニューラルネット作り始めた初期からほぼ変更なし white-azalea.hatenablog.jp つまりこれはこれでほぼほぼ汎用化されてると言っていいハズ class Neuron(ILayer): def __init__(self, n_upper, n, wb_width, activation_function, differential_function): self.w = wb_width * np.random.randn(n_uppe…

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

… NN は前回までのニューラルネット実装を拝借。 white-azalea.hatenablog.jp AdaGrad/ReLU/SoftMax で処理するよーコピペできるって楽 class Neuron(ILayer): def __init__(self, n_upper, n, activation_function, differential_function): self.w = wb_width * np.random.randn(n_upper, n) # ラン…

過学習対策あれこれ

white-azalea.hatenablog.jp 前回わざと過学習させてみたわけだが、そもそも学習の打ち切りはやたらと難しいハズだ。 あの時はデータセットが 200 位しかないし、ニューロンの数も限られていたといえる。 しかし、現実には大量のデータセットがあるだろうし、学習時間はそこそこかかるだろうと思われる。 例えば1回の学習だけで数時間かかるとする。 それを見て、じゃぁどの位で打ち切るか?2週目開始までにどれだけ待つ必要があるだろう? 要するに学習の打ち切りを判断する…

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

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

ニューラルネットの弱点

…くなる問題。 これはニューラルネットに限った話でもない。 同一のデータセットを学習させ続けることでも起きるが、ニューラルネットの場合以下のケースがある。 少ないデータを学習に使い続ける ニューロンの学習は1回で決まるものでもないので、エポック(データセット1週分)内の確率的というか平均というか…そんな特徴を捉えていく。 データ数が少ない場合、特徴を取り違える可能性がある。 ニューロン数を増やしすぎる データセットにピッタリ合いすぎて、未知のデータに対応できなくなる。 ニューロ…

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

前回のニューラルネットの分類で、アヤメの判別を実装しました。 white-azalea.hatenablog.jp この学習データを JavaScript に持って行って動かそうとしたのが今回。 学習データを取り出そう ニューロンの学習した重みとバイアスを JSON 化して取り出すようメソッド追加し、 import json class Neuron: # 中略 def show(self): print(json.dumps(self.w.tolist())) print(…

自作ニューラルネット(分類型)を作って、色々やってみる

今度は分類問題に対応した NN 実装を考える。 とはいえ、テンプレは 前回記事 で作ってるので、さっくり定義する import numpy as np import matplotlib.pyplot as plt %matplotlib inline wb_width = 0.01 # 重みバイアスの広がり方 epoch = 101 # 学習データ数 eta = 0.1 # 学習係数 # 各層のニューロン数 n_in = 2 n_mid = 6 n_out = 2 clas…

ニューラルネット実装

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

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

…伝播を続けていく。 ニューラルネットに実際に適用して考える 損失関数を二乗誤差、活性関数を恒等関数とした出力層の場合 を求めたい。 二乗誤差関数は なので、 ※ 偏微分につき、 を含まない項はすべて 0 となるため。 隣の項は 活性関数が恒等関数(入力 = 出力)の関数なので、 なので 中間層がシグモイド関数であるとした場合 シグモイド関数 の微分は なので 交差エントロピー誤差とソフトマックス関数を採用した出力層 これは分類で使う組み合わせ。 交差エントロピー誤差 こちらの…

ニューラルネットの形状に関して

… 11, 12] ]) B = np.array([ 1, 2, 3 ]) U = X.dot(W) + B print(U) def sigmoid(u): return 1 / (1 + np.exp(-u)) sigmoid(U) さて、ネタは揃った、いや、揃っちゃった(汗 後はこの値に最終層(恒等関数 or ソフトマックス関数)+誤差関数 を含んだ状態で微分して、勾配降下法で W, B の値を更新すればニューラルネットワークの学習ができるはず。 次回は微分地獄かー(汗

ニューロンの定義と、重み/バイアスの影響

…と仮定するなら、3層ニューラルネットはこう定義できる。 とりま出力はグラフにしてみる。 x_1 = np.arange(-1.0, 1.0, 0.2) x_2 = np.arange(-1.0, 1.0, 0.2) X = np.zeros((10, 10, 2)) for i in range(10): for j in range(10): X[j][i] = np.array([x_1[i], x_2[j]]) def exec_nural(X, w_input2mid…

ReLU 関数とその派生

前回記事の続き。 white-azalea.hatenablog.jp ReLU に関して深掘りして調べてみた。 ReLU は DeepNeuralNetwork に使われる…という知識はあったのだけど、調べてみると関連する活性関数が沢山あった。 ReLU これは分かりやすい import numpy as np def relu_func(x): return np.where(x <= 0, 0, x) Leaky ReLU こちらもわかりやすい、というかこれも前回実装し…

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

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

微分のおさらい

…というやり方 これはニューラルネットの学習の時に、多次元テンソルのパラメータのうち、一つのパラメータ以外をすべて定数とみなして、前後極小で動かし(偏微分して)そのパラメータに付与すべき係数値を算出する…というように使った。 因みにこうして出てきた導関数は、通常の導関数と明確に分けるために 偏導関数 と呼ぶ。 全微分 z を次の様に定義したとき、この z の微分を 全微分 と呼ぶ。 この全微分をこんな感じに書けるらしい。 形見ればわかるけど、偏微分して足しただけだコレ。 ただし…

行列操作周りのメモ

ニューラルネットワーク周りが行列だらけなので。 そして僕は数式では理解できず、コードで理解する人なのでメモ(汗 スカラー といっても、基本的には単独の値を意味する a = 1 b = 1.5 c = 1.2e5 ベクトル(一次テンソル) スカラを直線状に並べたもの≒一次元配列 import numpy as np a = np.array([1, 2, 3]) b = np.array([-1.1, 1.8e2, 3.14]) 行列(二次テンソル) つってもこれも有名すぎるで…

も少し真面目にスクレイピング(Scrapy)

… ゼロDeep4章のニューラルネットワーク学習 (at 2019-02-03T16:05:30Z, URL: https://white-azalea.hatenablog.jp/entry/2019/02/04/010530) 2020-12-21 20:41:49 [scrapy.core.scraper] DEBUG: Scraped from <200 https://white-azalea.hatenablog.jp/?page=1549433639> {'dat…

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

….show() よくニューラルネットワークのニューロンにされるやつ。 まぁ要するに 0 - 1 の間、0 でちょうど 0.5 となってるので、パーセンテージを扱う処理に向いてるって話らしい。 これで単純な二値判定するなら、0.5 が当然のようにボーダーになるわけで… 0 がちょうど 50% なので、それがプラスかマイナスかで 1/ 0 と判定すればいいので という形になる。 これで長方形判定をするものと考えると。 横長である確率を求めると考えて、横軸を 縦軸を として適当なパ…

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

…merical_gradient(loss_func, current_x) # 誤差を元にあるべき x に近づける current_x += gradient * lern log.append(current_x) 学習係数をかなり小さくしてやらないと、プラスとマイナスでやたらと振れた挙句オーバーフローを起こすので注意 プラスからでもマイナスからでも、最終的に x=-0.5 に収束する。 ニューラルネットワークの学習計算から論理を切り出してみたのだが、なんとなく良さそう。

ゼロDeep4章のニューラルネットワーク学習

…の損失関数と、現在のニューラルネットワークの重み、バイアスをパラメータに微分して、パラメータのどの方向に変動させるべきかを見る。 最急降下法というようだ。 出てきた誤差を、学習係数を踏まえて実際にパラメータへ入力する。 という流れで、ニューラルネットワークの各階層をの「重み」「バイアス」を弄っていく。 というのがどうも学習の論理らしい。 そこまでは腑に落ちた。 で、実際やってみたところ、サンプルの時点で処理オワンネ(汗 StudyDocs/two_layoput_net.py…

ゼロから作るDeepLerning 3章

…方。 よく訓練されたニューラルネットワークの数字文字の識字率(見て驚けー)。 まで。 学習までは踏み込んでない状況。 公式のリポジトリ見ればわかるので、大した意味はないのだけど、この章で実装した各種活性関数/出力関数。 import numpy as np import matplotlib.pylab as plt def step_func(x): return np.array(x > 0, dtype=np.int) def sigmoid(x): return 1 …

ニューラルネットワークの自分メモ

…記憶と絡めて、改めてニューラルネットワークを再理解したというはなし。 自分用メモなので、これを読んで理解できるかは別問題。 ニューラルネットワークは、よくイメージされる相互に接続されるニューロンとシナプスを模倣した図を連想しがちだけど、現実的には結構違う。 ニューロンは活性関数と呼ばれる所定の計算式(活性関数と言う)で表される。 ただし、活性関数は認識したい対象としての引数の他に、パラメータ(これも引数じゃねーのかというツッコミはなしで)を受け取って計算する。 パラメータは、…

OSC2015行った記録

…てのがある 決定木 ニューラルネットワーク サポートベクターマシン : 識別特化のニューラルネットワーク クラスタリング ベイジアンネットワーク : 統計的な推察とか ツール やっぱ R だよねー。 ただ、最近は統計知らなくてもにわかデータサイエンティストが増殖してきてる。 だから勉強せー! R Tips ってサイトがオススメだそーな。 入門的には「データ分析がデキるITエンジニアになるために必要な「道具」を揃える」入門書はオライリーの「実践 機械学習システム」 「Pytho…