我的類神經網路模型 (Rich’s Neural Networks Model) 首部曲

2009-01-01

宇宙間潛藏著一種超級生物(Extra Terrestrial),透過它獨特的神經網路(Nueral Networks),能快速地傳遞化學訊息(Message)給網路中的神經元(Nuerons)。

神經元有以下特色:

  • 神經元具有若干屬性資料(Atributes),描述此神經元所具有之特性。
  • 神經元具有若干感知觸足(Perception Synapse),用來傳遞訊息給其他神經元。
  • 末梢神經元僅具有若干接收感知觸足(Receiving Perception Synapse)。
  • 神經元具有感知觸足數與其能力成正比,
  • 神經元具有保存狀態(States)能力。
  • 神經元具有 ”控制單位”(Control Unit),用來協調神經元機制,保存屬性與狀態能力。
  • 相依之神經元群位於相同之 ”邏輯平面”(Domain),而如何定義 ”相依” 端由觀察者(Observer)認知所決定。
  • 不同觀察者或甚至相同觀察者均可由不同定義,而產生出無限 ”邏輯平面”。

感知觸足有以下特色:

  • 感知觸足具有:感知觸足具備方向性,包括傳遞(Send)、接收(Receive)及傳遞-接收(Send-Receive)等屬性。
  • 感知觸足具有:唯一性,即使多支感知觸足均具有相同傳遞/接收屬性, 但仍然視為獨立個體。
  • 具有相同傳遞/接收屬性之感知觸足具有:加權數(Weightage)或優先權(Priority)。
  • 感知觸足傳遞時:會依據自身屬性資料變化,產生可被量度的化學動能(Momentum)”推動” 訊息給其他神經元。
  • 感知觸足接收時:會依據自身屬性資料變化,產生可被量度的化學阻抗(Resistence/Weightage)” 阻擋” 訊息接受或減量接受。
  • 感知觸足阻擋接收時:傳遞神經元依據自身屬性資料變化,可以將訊息進入佇列等後阻抗降低後再次傳遞,或者廢棄此訊息。
  • 感知觸足傳遞-接收時:採取 ” 問答” 模式,傳遞神經元先問,接收神經元答覆;此時接收神經元與傳遞神經元異位,直到接收神經元表達 ”不再接收” 或傳遞神經元表達 ”不再傳遞” 為止。

神經網路例說如下:

獨立神經元
獨立個體,不與其他神經元互動。
雙子單/互向
2 神經元,單向傳遞訊息。 2 神經元,雙向傳遞訊息。
單向鏈結
循序式傳遞 併發式傳遞
向量空間
空間中
神經元傳遞
空間某邏輯平面中
神經元傳遞
空間邏輯平面間
神經元傳遞

神經網路機能如下:

  • 最短/快路徑:
    • 在神經網路中之各神經元,其加權數不一,感知觸足阻抗也不一,因而產生路由。
    • 路由優先度 = 加權數 * 阻抗。產生最短/快路徑可能不只一條。
    • 從某一神經元出發,在功能相同之感知足觸群中,選擇較高路由優先度之感知足至接收神經元,直至末梢神經元為止,所歷經之路徑。
    • 在最短/快路徑上,沒有任何一個神經元產生斷路。
    • 最長/慢路徑意含著 ”較佳路徑” 或 ”最快到達” 概念。
  • 最長/慢路徑:
    • 從某一神經元出發,在功能相同之感知足觸群中,選擇較低路由優先度之感知足至接收神經元,直至末梢神經元為止,所歷經之路徑。
    • 在最長/慢路徑上,沒有任何一個神經元產生斷路。
    • 最長/慢路徑意含著 ”較差路徑” 或 ”最晚到達” 概念。
  • 最低初始動能:
    • 經最短/快路徑,在最短/快路徑上,沒有任何一個神經元產生斷路,其所歷經各神經元所選感知觸足阻抗之總和。
    • 感知觸足阻抗 y = f (x0, x1, x2, xn),x0..n 代表被射入神經元之屬性序列。
    • 最低初始動能意含著在最短/快路徑上,所需之 ”成本” 概念。
  • 安全初始動能:
    • 經最長/慢路徑,沒有任何一個神經元產生斷路,其所歷經各神經元所選感知觸足阻抗之總和。
    • 最低初始動能意含著在最長/慢路徑上,所需之 ”成本” 概念。
  • 斷路:
    • 神經元是有能力極限的,能力極限是變動的,是依其被射入屬性而變化的。其能力函數 y = f (x0, x1, x2, xn),x0..n 代表被射入屬性序列。
    • 當能力函數值 <= 0 表示發生臨界條件就產生斷路。
    • 某神經元依據自身屬性資料變化,發生臨界條件(超出其能力範圍),而升高阻抗到 100%, 致使未達末梢神經元即斷路。
  • 工作區:
    • 在某一條包含若干神經元之網路中,各神經元能力不一。當改變網路起始神經元屬性後,鏈動著整個網路。
    • 當起始神經元屬性賦予不同值時,較脆弱神經元一一產生斷路。此時神經網路之路由亦發生變化,產生新最短/快路徑。
    • 從某一神經元加以不同階層(Scale)動能,在該神經元可以提供之動能為範圍,產生各種斷路數(Brokage),直至沒有一條途徑可達末梢神經元 為止,所描繪之以動能-X,斷路數-Y 曲線圖。
  • 熱區:
    • 一段時間內,在某 ”邏輯平面” 上,分別依其所屬神經元被歷經頻率,以顏色冷暖表示。
    • 熱區意含著神經元群在某 ”邏輯平面” 上 重要性或依存度,愈冷之區域表示其神經元在 ”邏輯平面” 隸屬關係愈弱。
    • 熱區可以用高於某歷經頻率之神經元在該 ”邏輯平面” 密度來表示 。
    • 熱區密度 = (高於某歷經頻率之神經元數) / (”邏輯平面” 總神經元數)
  • 飄移率:
    • 一段時間內,某神經元歷經頻率衰減度,衰減愈大者表示該神經元已經退化。
    • 神經元在網路中被造訪的頻度,意含著其在整個生命體之重要性或依存度。
    • 飄移率=(歷經頻率2 – 歷經頻率1) / (時間2 – 時間1)

神經網路具備資料結構中多元樹之特性,但又不盡相同。說明如下:

  • 相似性:
    • 多元樹之每個節點就是神經元,連接子節點之葉桿都是感知觸足。
    • 節點具有多重屬性,與其子節點相關連屬性間,具有某種邏輯從屬關係。
    • 依某種二元邏輯從屬關係(大/小,真/假),多元樹則可退化成二元樹。
  • 差異性:
    • 多元樹之父子節點間,沒有傳遞 ”能量” 概念,也沒有屬性射入(Injection)概念。
    • 多元樹之節點沒有 ”加權數” 或 “優先權" 概念。
    • 連接子節點之葉桿,沒有傳遞與接收概念,也不存在 ”阻抗” 概念。
    • 多元樹節點間,彼此沒有 ”邏輯平面” 概念,僅有與子節點間有從屬概念。

我們可以向此超級生物師法,以其卓越的神經網路來解釋演繹人類事物與思維。它的應用極廣包括:

  • 描述企業架構各圖元素間之關係:
    實施企業架構過程,會產生許多不同用途圖。每張圖中含有許多企業元素,及它們之間的關聯,舉例來說:
    在企業夥伴鳥瞰圖中,說明企業組織與合作夥伴彼此間關係,每個單位就是一個神經元,其屬性記錄著單位識別、產值、功能等。
    感知觸足說明著神經元與神經元間互動,阻抗表明工作負荷,整個神經網路即建構夥伴鳥瞰圖。
    在企業內部組織分工圖上,與夥伴鳥瞰圖中之元素(神經元)是有關聯的,增加了作業流程識別碼、產出電子文件識別碼等等屬性。
    而在供應鏈分工圖上,與夥伴鳥瞰圖中之元素(神經元)也發生關聯,增加了產品/服務、品質、已交易量等等屬性。
    這就是不同 ”邏輯平面” 間彼此支撐,形成一種多維度的相依關係。
  • 描述企業流程(Biz Process Management)元素間之關係:
    流程圖中之節點就是一個神經元,其屬性記錄著觸發 ”下一步” 所需之資料。
    感知觸足說明著觸發或接收訊息的要件,單向鏈結表示流程循序進行,而多向鏈結則表示流程是同時平行進行。
    阻抗=100% 表示要求傳遞神經元以佇列機制,依序觸發流程接收節點;而另一個廢棄訊息繼續下一條訊息機制,適用於說明類似股市報價之情境。
    流程產物如為電子文件,則此神經元在 ”企業電子文件” 之 ”邏輯平面” 透過 ”文件識別碼” 之感知觸足相鏈節。
  • 描述企業電子文件(Electronic Content Management)間之關係:
    每張電子文件就是一個神經元,其屬性記錄著文件欄位,有效日期等屬性。
    文件類別可以是感知觸足,說明著所屬文件間是如何被保存及使用,阻抗是文件被使用之頻度。
    文件中某些欄位與其他文件關聯時,感知觸足說明著這些文件是如何彼此相依,當某文件缺少關鍵欄位時,其相依文件之阻抗=100% 並等候該關鍵欄位滿足,再依序啟用相依文件。
  • 描述專案管理各工作間之關係:
    每項工作就是一個神經元,其屬性記錄著資源、最少/多完成日、成本等屬性。
    每項工作完成狀態與條件就是感知觸足,而下一項工作阻抗則是該項資源是否備妥以承接任務,當資源未齊其阻抗=100%,推遲該項工作之開始。
    總動能=各工作項目成本 + 阻抗係數 * 損失
    斷路圖來找出整個專案之脆弱點,儘早弭平資源缺乏或工期過緊之工作項目。
  • 描述知識管理中各知識間之關係:
    每項知識就是一個神經元,其屬性記錄著知識內容。
    每項知識都具體多個分類,分類就是感知觸足,說明著類與類間的關係,如:黃種人屬於人(類),人(類)屬於哺乳類,哺乳類屬於動物等。
    每項知識也都具體多個標籤,說明著不同 ”邏輯平面” 將不同的知識神經元,歸為同一概念。
    熱區代表一段時間內,多數觀察者共同關心某些 ”邏輯平面” 上之知識。
    而不經常引用之知識必然有高飄移率。
  • 描述組織成員與工作績效之關係。
  • 智慧型搜尋引擎(Search Engine)。
  • 人工智慧與模糊(Fuzzy)。

神經網路機能十分複雜,我利用企業訊息總線來簡化成下圖:

  • 紅色球表示主神經元
  • 連接棒表示雙向感知觸足
  • 透明平面表示訊息交換處理單位(Message Switching Unit)或者 ”隱藏神經元”
  • 其他色球表示接收神經元

主神經元向訊息交換處理單位發佈(Publish)各種訊息,接收神經元向訊息交換處理單位訂閱(Subscribe)訊息。當某項訊息被發佈時,訊息交換處理單位通知接收神經元準備接收,若當時接收神經元阻抗=100% 則保留訊息發佈狀態;此時其他接收神經元可能已處理完畢,並準備接收下一訊息。因此各阻抗不同之接收神經元,其處理訊息狀態皆不相同。某些接收神經元感知觸足依功能不同而採取廢棄訊息情境,隨時表明最後處理狀態。

以 C++ 程式來重現此神經網路之各種機能如下(請待續)

Neural_Object 基本元素
#ifndef _NEURAL_OBJECT_H_
#define _NEURAL_OBJECT_H_

#include <iostream>

using namespace std;

enum Neural_Object_Types { Neuron, Attribute, Perceptor, Message };

class Neural_Object
{
public:
	Neural_Object() {};
	~Neural_Object() {};

	string getUUID();

	Neural_Object_Types getObjectType() {};
	void setObjectType(Neural_Object_Types value) {};

	string getObjectValue() {};
	void setObjectValue(string value) {};
protected:
private:
	string UUID;
	Neural_Object_Types ObjectType;
	string value;
};

#endif // _NEURAL_OBJECT_H_
Neuron 神經元
#include <iostream>
#include <vector>

#include "neuron-attribute.h"
#include "neuron-perceptor.h"

using namespace std;

class Neuron: public Neural_Object
{
public:
	Neuron() {};
	~Neuron() {};

	int getWeightage() {};
	void setWeightage(int value) {};

	vector<Neuron_Attribute> getNeuronAttributes() {};
	Neuron_Attribute getNeuronAttribute(string AttributeUUID) {};

	Neuron_Attribute getNeuronAttribute(int pos) {};
	void addNeuronAttribute(Neuron_Attribute value) {};
	void removeNeuronAttribute(int pos) {};

	vector<Neuron_Perceptor> getNeuronPerceptors() {};
	Neuron_Perceptor getNeuronPerceptor(string PerceptorUUID) {};
	Neuron_Perceptor getNeuronPerceptor(int pos) {};
	void addNeuronPerceptor(Neuron_Perceptor value) {};
	void removeNeuronPerceptor(int pos) {};

	virtual bool isNeuronBroke() {};
	virtual bool sendMessageToNeuronPerceptors() {};
	virtual bool receivedMessageFromNeuronPerceptors() {};
protected:
private:
	int Weightage;

	vector<Neuron_Attribute> neuronAttributes;
	vector<Neuron_Perceptor> neuronPerceptors;
};

#endif // _NEURON_H_
Neuron Attribute 神經元屬性
#ifndef _NEURON_ATTRIBUTE_H_
#define _NEURON_ATTRIBUTE_H_

#include <iostream>

#include "neural-object.h"

using namespace std;

class Neuron_Attribute: public Neural_Object
{
public:
	Neuron_Attribute() {};
	~Neuron_Attribute() {};

	string getAttributeValue() {};
	void setAttributeValue(string value) {};
protected:
private:
	string AttributeValue;
};

#endif // _NEURON_ATTRIBUTE_H_
Neuron Perceptor 感知觸足
#ifndef _NEURON_PERCEPTOR_H_
#define _NEURON_PERCEPTOR_H_

#include <iostream>

#include "neural-object.h"

using namespace std;

enum Neuron_Perceptor_Types { Send, Receive, Both };

class Neuron_Perceptor: public Neural_Object
{
public:
	Neuron_Perceptor() {};
	~Neuron_Perceptor() {};

	Neuron_Perceptor_Types getPerceptorType() {};
	void setPerceptorType(Neuron_Perceptor_Types value) {};

	int getPerceptorResistance() {};
	void setPerceptorResistance(int value) {};

	virtual bool isNeuronPerceptorBlocked() {};
	virtual bool onNeuronPerceptorMessageSend(Neural_Object &message) {};
	virtual bool onNeuronPerceptorMessageReceived(Neural_Object &message) {};

protected:
private:
	Neuron_Perceptor_Types PerceptorType;
	int PerceptorResistance;
};

#endif // _NEURON_PERCEPTOR_H_
廣告
%d 位部落客按了讚: