物理や工学での計算をコンピュータにどのようにさせるかがわかる本です。コンピュータ側から見ると利用者はこのように数値計算をするよと見えるでしょう。だから最初に誤差の管理が述べられていると思います。その後、近似、方程式、微分の計算のさせ方が詳しく載っています。今のAIシステムの計算部分の半分はこれで済みそうです。残り統計と確率が必要です。
カテゴリー: ニュース
ニュース
マイコンAIの数学02
少しブール代数について調べます。ブール代数とは何かはここでは扱わずその応用を勉強します。
ブール代数 ブール代数での方程式 山田 欽一 1964
ブール微分・偏微分 DAS S R , SRIMANI P K , DATTA C R , MANDAL K, Conf Rec Asilomar Conf Circuits Syst Comput 1976
ブール積分 TUCKER J H, TAPIA M A, BENNETT A W, Applied Mathematics and Computation 1988
ネットワーク ブーリアンネットワークの固定点数の期待値の定理 森 史,望月 敦史 2017
難しそうなタイトルが並んでいます。でも論理演算だけで言い換えればTTLだけで演算がどこまでできるか確認しておくことも8ビットマイコンでAIを作る上で必要なことと考えます。結果どれも使えなくてもきっと血となり肉となるでしょう。
2値演算しかできないデジタル半導体
ブール代数内での数学を広げて欲しい
数学の様々な分野をブール代数を条件とした時にどうなるか調べないといけない。
2023.06.08
ブール多次元論理というのがあったのでChatGPTに聞いてみた。
User
ブール多次元論理とは何か解りますか。
ChatGPT
はい、ブール多次元論理についてお答えします。
ブール多次元論理(Boolean Multivalue Logic)は、通常のブール論理(二値論理)を拡張したものです。通常のブール論理では、論理値は真(1)または偽(0)の2つの値を取りますが、ブール多次元論理では、論理値がより多くの値を取ることができます。
ブール多次元論理では、各論理変数が複数の値を取ることができます。具体的には、各変数がn個の値を持つことができます。これはn進数の各桁を表現することと同じです。例えば、2進数では各桁が0または1の2つの値を持ちますが、3進数では各桁が0、1、または2の3つの値を持ちます。
ブール多次元論理は、情報表現や回路設計などの分野で使用されます。特に、量子コンピュータや多値論理回路の設計において重要です。ブール多次元論理では、通常のブール演算(AND、OR、NOTなど)を拡張し、多次元の論理演算を定義することができます。
例えば、2進数のブール多次元論理では、各変数が0または1の値を取りますが、3進数の場合は0、1、または2の値を取ります。そのため、通常のブール演算に加えて、例えば3進数の加算演算子を定義することができます。
以上がブール多次元論理の概要です。ブール多次元論理は、論理の拡張性を提供し、特定の応用分野で有用なツールとなります。
マイコンAIの数学01
8ビットマイコンを使ったAIを作る上で必要な数学を調べます。知らないところで基礎を固めていてくれている数学ですが、まだ実用化できていないAIを作る時に直接役に立つ数学の分野が新たに見つかるかもしれません。
数値計算
誤差 実数を使ったり無限に繰り返す計算を途中で打ち切ったりすると誤差が出ます。コンピュータは有限の2値の演算しかできないので誤差を正しく管理しないと誤った結果を導いてしまいます。
関数の近似 有限個のデータから近い値を出力する関数を作る考え方は使えそうです。データから特徴を抽出しその特徴さえ覚えていればデータを覚えていなくても再現できるというのは自分の頭にもありそうな気がします。
高精度計算 一つの変数では表現できる値の範囲は少ないですが一つの値を複数の変数を使って表現できれば値の範囲を拡げることができます。
代数方程式 4次方程式までは解法を使い5次方程式以降は近似解を求めるようにします。
数値積分 2値演算を前提にした場合、補間しないか単純な補間であれば使えそうです。
非線形方程式 解析的に扱えないので数値計算に向かないですが世界は非線形満ちています。どのように扱ったらよいかより詳細に調べる必要があります。
連立一次方程式 方程式を解くような仕組みが人工知能に有用かどうか考えると複数の条件から結論(解)を導き出す時に類似しているかもしれません。
常微分方程式 脳の動作を模写するならば必ず必要になるでしょう。
偏微分方程式 脳を模写した時はきっと偏微分だらけのプログラムになると思います。でも8ビットCPUでどう扱ったらよいのでしょうか。ブール代数における偏微分方程式という分野はあるのでしょうか。
行列計算 多次元の計算を行うには配列を作ってその配列に対して計算を実行します。
ここで波形測定器をまとめます。普通はオシロスコープやロジックアナライザなどで波形を確認しながらハードウェアやソフトウェアのデバッグすると思いますが、手作りの装置でできることを考ます。
発振器
測定器側の状態をや被測定回路の特性を測る時に必要です。
増幅器
被測定回路と測定回路を分離するのに必要です。
表示器
バー状にLEDを配置しているのでデジタル情報を表示していても点灯しているLEDの長さを視覚的に捉えられるのでアナログ表示のように見えます。
7-Segment LEDであれば直接バイナリデータを読めます。
リレー式AND回路
数Hzの信号しか扱えませんがリレー式の論理回路を作りました。配線をちょっと変えればORでもNANDにでも変えられます。活躍する機会はあるのでしょうか。
テスター
いつもありがとう
マザーツール。
重宝してます。
電源
電池ボックスは色々な直流をすぐに取り出せてとても便利です。余計な回路もないので他に影響が出ません。
大袈裟な代物になりましたが5Vの両電源、+12Vが二つ取り出せます。アナログなDCーDCコンバータです。
ソフトウェア
Audacityはフリーソフトです。可聴範囲ですが入力信号を絵にしてくれます。いつでも忠実に絵を描いてはくれませんが、データが保存できるところが優れものです。
16ビットバイナリカウンタと8ビットディスプレイ
LEDを16個並べて点灯しているところを1としそれを頭の中で瞬時に16進数に換算するのが大変なので、7-Segment LEDを追加しました。SN74LS249Nでバイナリデータをカソードコモンの7-Segment用に変換しています。NE555の発振周波数が低いと桁の下の方がカウントアップし周波数が高くなるにつれ桁の上の数字がカウントアップします。予想通りの動きでした。
NE555に可変抵抗器とレンジ選択用のコンデンサを繋ぎ数Hzから数百kHzまで矩形波を発振できます。
SN74LS193Nを4個並べ一つにつきLEDを4個接続して計16個で16ビットのバイナリを表示できます。
最初ネットで7-Segment LEDを表示する方法を調べていたのですが74LS47や48、あるいは247とかが見つかりました。回路図も結構あったのですがアノードコモンばかりでこのカソードコモン用の249をどうしたら良いかわかりませんでした。
実験をしたりデータシート読んだりして解ったのですがプラス側電源ー抵抗ーSegment LEDーGNDとし抵抗とSegment LEDの間に249のOUTを接続したら思い通りに動作しました。
多分ですが249の出力は点灯したいSegment LEDをONする信号を出すのではなく、何もしないと全部点灯している状態に対してOFFにしたいSegment LEDをGNDに落として消灯する信号を出すロジックICだと思います。
16ビットなので同じものをもう一つ作りました。
簡単な表示しかできませんがデジタル信号を表示するツールが揃いました。
ChatGPTに聞いてみた。
User
2SK161GRは何ですか。
ChatGPT
2SK161GRは、低ノイズMOSFET(金属酸化物半導体素子)の1つで、主にオーディオ用途に使用されます。このMOSFETは、電源回路、アンプ回路、プリアンプ回路など、さまざまなアプリケーションに適しています。
2SK161GRは、グリーンパッケージで提供されており、オン抵抗が約10Ω、最大ドレインソース電圧が40V、最大連続ドレイン電流が10mA、最大パルスドレイン電流が50mAとなっています。また、高いゲート抵抗と低い入力容量を持ち、低ノイズで高利得のアンプ回路に適しています。
なお、2SK161GRは、欠品や絶版になっている可能性があり、代替品や類似品を探す必要があるかもしれません。
ChatGPTに聞いてみた。
User
2SK364GRは何ですか。
ChatGPT
2SK364GRは、低雑音MOSFET(金属酸化物半導体素子)の1つで、IDSSが2.5mA〜7.5mAの範囲で調整可能なタイプです。このMOSFETは、音響機器や電源回路、アンプ回路など、さまざまな電子回路で使用されます。
2SK364GRは、グリーンパッケージで提供されており、オン抵抗が約10Ω、最大ドレインソース電圧が25V、最大連続ドレイン電流が50mA、最大パルスドレイン電流が200mAとなっています。また、高いゲート抵抗と低い入力容量を持ち、低ノイズで高利得のアンプ回路に適しています。
なお、2SK364GRは、欠品や絶版になっている可能性があり、代替品や類似品を探す必要があるかもしれません。
SN74LS249N
ChatGPTに聞いてみた。
User
SN74LS249Nは何ですか。
ChatGPT
SN74LS249Nは、8ビットのマルチプレクサ(MUX)/ デマルチプレクサ(DEMUX)IC(集積回路)です。Muxとは、複数の入力から1つの出力を選択する機能を持った回路のことであり、Demuxとは逆に1つの入力から複数の出力を選択する機能を持った回路のことです。
このICは、3つの制御端子を介して8つの入力を選択し、1つの出力にマルチプレックスすることができます。制御端子には、3つのビットで表される2進数の信号が入力されます。これにより、8つの入力信号のうちどれを選択するかが決定されます。
また、このICは、1つの入力信号を8つの出力信号にデマルチプレクスすることもできます。制御端子の状態に応じて、1つの入力信号が8つの出力信号のうちどれか1つに選択されます。
SN74LS249Nは、LSシリーズのTTLテクノロジを採用しており、高速で信頼性が高く、広く使用されているICの1つです。このICは、コンピュータや通信機器、計測器、音声機器など、さまざまなアプリケーションに使用されます。例えば、複数のデータ信号を処理するために使用されることがあります。
測定器を製作する過程で発振器が必要になりNE555で周波数可変発振器を作りました。せっかく発振器を作ったのだからカウンタも整備しました。LEDを16個並べ74LS193を4個使った16ビットバイナリカウンタです。
テスターで周波数を見ながらカウントの様子を観察すると高い周波数になるに従い右側の明滅が目視でき、低い周波数になるに従い左側の明滅が目視できるようになります。数十Hzを超えるとLEDの明滅は目視できなくなります。横に並べたLEDの左から右に一つ進む度に周期が1/2になるので16ビットもあると数百kHzであっても目視できるようになります。
カウンタは周波数を測定する目的ではないので余談でしたが原始的な16ビットディスプレができました。構造が単純なのでそこかしこで活躍してくれるでしょう。
コンピュータの仕組み05
ドーナツのように穴の空いた鉄に銅線を2箇所巻き付けます。片方は巻き数を多くし、もう片方はそれより少なくします。巻き数の多い方に発電した電気を流します。発電所は交流の電気を作っていますので鉄の部分は極性が交互に変わる電磁石になります。すると同じ鉄に巻いたもう片方の電線に磁力が交互に加わるので発電が起きて電気が出てきます。出す方の電線の巻き数を少なくしておけば電圧が低くなります。
電圧を変えるところには必ずこのような変圧器が使われています。省電力であれば半導体に置き換えることができるようになってきましたが大電力の変圧はまだこの変圧器が活躍しています。
ここでも電気を送るときのように損が出ます。高電圧をコイルにかけて鉄を電磁石にしもう一つのコイルでその電磁石からまた発電する。また発電しなければならないため損失が出てしまいます。
コンピュータの仕組み04
発電所で電気をたくさん作りあちらこちら利用する所へ送るにはただ電線で繋げばよいわけではないです。効率を良くするために発電所では大きな電力の電気を作っていますが利用する側ではそんなに大きい電気は必要ないからです。
最初から小さい電気を作って送る方法もありますが電線を流れていく過程で発熱して使ってもいないのに減ってしまいます。大きな電気、言い換えると高電圧の電気を発電所から出して利用するところで電圧を下げて使うと効率が良くなります。
電線に電流が流れると発熱して損してしまいます。なるべく電流を流さないようにするためには圧だけかけて使う所だけ電流が流れるようにします。
国土の広い国では発電所から出る電気の電圧をすごく高くしています。日本では数万ボルトから数千ボルトです。家の近くの変電所で数百ボルトまで落とし更に電柱で100から200ボルトにしています。電流を流さない、これが電気を無駄にしない大事な方法です。が、電流が流れないと電気製品が動きません。この矛盾に折り合いをつけて電気を利用しています。
コンピュータの仕組み03
コイルの近くで磁石を回転させると電気ができますが、その磁石を回転するためには色々な方法があります。人力以外で昔から回転するものといえば風車、水車でしょうか。
水車は水の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。これを水力発電と言います。ダムを作って水の流れを調整すれば回転を制御できるので安定した電気を作ることができます。
風車は風の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。風は水と違い溜めることができません。強めたり弱めたりすることもできません。風力発電は安定して電気を作ることができないのです。
そこで考えたのがお湯を沸かす方法です。口の狭い容器でお湯を沸かせば口から湯気が出ます。火を強めれば湯気の勢いが増し、火を弱めれば勢いが弱くなります。湯気が出るところに羽根のついた軸を置けば回転するので電気が生まれます。丁度いい電気の量になるように火を強めたり弱めたりすれば安定した電気を得ることができます。
石炭や石油、ガスを燃やしてお湯を沸かせば火力発電、ウランの反応でお湯を沸かせば原子力発電となります。