• 締切済み

ループ状システムのUMLでのモデリング

ニューラルネットをUMLでモデリングする方法について教えてください。 まず、ニューラルネットとは何かですが、以下のサイトを参照して下さい。 http://www.si.hirosaki-u.ac.jp/~slame/neuro/neuron.html それを私なりにUMLでモデリングしてみたのですが、「dendrite」から「soma」へ繋がる所でループしてしまいます。 少し勉強しただけなので、あまり理解できていないのですが、ループしたモデリングは相手に対する依存が強くなるので、お勧めできないということでした。 このような場合どのようにモデリングするのがベターな方法なのでしょうか? --考えてみたモデリング-- 「soma」◆---「axon」◆---「synapse」-|   ◆---「dendrite」←----------|

みんなの回答

  • ency
  • ベストアンサー率39% (93/238)
回答No.7

# まだ見てますか? クラス図を作成する場合、通常はまずオブジェクト図から作成することが多いです。 逆に、クラス図を先に作成した場合でも、オブジェクト図で抜けがないか、冗長な箇所はないかをチェックすることが多いと思います。 で、今回の場合、結論としては、クラス図は質問者さんが描いたものと同じになってしまいました。 私の考え方はこんな感じですね。 (1) まずオブジェクト図を描いてみる。 (省略)…---[:dendrite]---+                  +---[:synapse]-------[:dendrite]---…(省略)                   |                  | (省略)…---[:dendrite]---+---[:soma]----[:axon]---+---[:synapse]-------[:dendrite]---…(省略)                   |                  | (省略)…---[:dendrite]---+                  +---[:synapse]-------[:dendrite]---…(省略) こんなのの繰返しになりそうだなぁ。。。 # ちなみに [:クラス名] の部分がオブジェクトになります。 # 本当は下線も必要なんだけど…そこまではご勘弁を。 こんな感じでまず、実際のオブジェクトについての図を描いてみます。 (2) (1) で描いたオブジェクト図を、クラス図にしてみる。   +--------------------------------------+   |                              |  1↓                              | 1 [dendrite]------◆[soma]◆------[axon]◆------[synapse]       1..*             1        1..* オブジェクト図から多重度もわかりますよね。 多重度をつけておくと、詳細な設計に落とし込むときや、実装するときなんかに「ここは多重度『*』だから、このクラスは配列で持たせないとダメだなぁ」なんてこともわかります。 あと、クラス図を描くときには、できればプロパティ名も書く習慣をつけたほうが良いですよ。 # とか言いながら、上の図でもプロパティ名は書いていませんが。。。 # まぁ、今回の場合はクラス名=プロパティ名で良いのではないかなぁ、と # いうことで、省略しました。 あと、[synapse]クラスと[dendrite]クラスの関連は、[synapse]クラスから[dendrite]クラスへの依存関係 (実線ではなくて破線の矢印) にしても良いかもしれませんね。 そうすれば関連がループすることもありませんし。 実際、[soma] を生成したときに、[axon]や[synapse]、[dendrite]といったクラスも一緒に生成されることになると思いますが、このとき[synapse]から隣[soma]所属の[dendrite]への関連は必ずしも必要ないはずです。 で、[synapse]から隣の[soma]所属の[dendrite]へパルスを伝えるときにだけその情報が必要になるわけで、他のクラス同士の接続関係よりも関係が弱いことは明らかです。 そういう場合に、依存関係を使うことが多いと思います。 で、依存関係にしてみたのが↓下図↓です。                << call >>   + - - - - - - - - - - - - - - - - - - - - - - - - +   |                              |  1↓                              | 1 [dendrite]------◆[soma]◆------[axon]◆------[synapse]       1..*             1        1..* この場合は、<< call >> (呼出し) という依存関係を使ってみました。 このくらいの図なら、デザインパターンとかを気にするまでもないかと思います。 # っていうか、そのままクラス図にしただけですし。。。 とりあえず、ご参考まで。。。

rocket2008
質問者

お礼

ご回答ありがとうございます。 すみません、しばらくみておらずお礼が遅くなってしまいました。 少し時間を掛けて読ませていただきます。

回答No.6

【soma】 |-『urgency』 [Integer] |-『importance』 [Integer] |-『value』 [String] |-【dendrite】[method] |-【axon】[method] |-【synapse.toString】[method] |-【synapse.toNumber】[method] |-【synapse.inspect】[method] UMLではありませんが、多少、それっぽいものを追加して書き直しました。 ていうか、書けるもんだなぁ。やっぱり時間をおいた方がよさげ。 dendriteとaxonはさしずめsetValue()、getValue()という所でしょうか。 UMLについてはあまり理解していませんが、 UMLにあわせるなら、なんのためのpropertyか、propertyとmethodの関連性も必要と思います。 (さらにテキストベースじゃ書けないというところが、、、) 余談ですが、UMLのLanguageは、言語や記述式ではなく、「書式」と訳すのはいかがでしょうか。 HTML/XMLにも通じると思いますが。

rocket2008
質問者

補足

お返事ありがとうございます。 >ニューラルネットは初耳ですが、 >ニューラルネットとニューロンを混同されてる、なんて事はありませんか? 多分無いと思いますが・・・なにか混同しているように見えますか? 分かりにくいのは次のところを説明していなかったからかもしれません。 最初に紹介した次のページが以下のURLなのですが、最終的にはこのモデルのモデリングをしようとしています。 ただ、どちらにしろ似たようなものなのかなと思っているのですが。 http://www.si.hirosaki-u.ac.jp/~slame/neuro/neuron2.html >神経系をUMLで表せる物ではないと思いますけどね。 >強引に書けば、こんな感じでしょうか。 >◆-「dendrite」◆-「soma」◆-「axon」◆-「synapse」◆- この辺をデザインパターンで表すと、Compositeになるのではないかと思うのですが。 ただ、木構造とも少し違うので、どのようにオブジェクト同士をつなげるのかなと考えていました。 http://www.nulab.co.jp/designPatterns/designPatterns2/designPatterns2-4.html >UMLについてはあまり理解していませんが、 >UMLにあわせるなら、なんのためのpropertyか、propertyとmethodの関連性も必要と思います。 プロパティーやメソッドまで記入しようとは考えていません。 soma、dendrite、axonのオブジェクトがどのように繋がるのかが、分からないのです。 >余談ですが、UMLのLanguageは、言語や記述式ではなく、「書式」と訳すのはいかがでしょうか。 >HTML/XMLにも通じると思いますが。 すみません、どういう意味なのかいまいち分からないのですが、HTML、XMLも使いますが、やはり言語だと思います。

回答No.5

ニューラルネットは初耳ですが、 ニューラルネットとニューロンを混同されてる、なんて事はありませんか? 神経系をUMLで表せる物ではないと思いますけどね。 強引に書けば、こんな感じでしょうか。 ◆-「dendrite」◆-「soma」◆-「axon」◆-「synapse」◆- soma(本体、神経細胞)は1つではないのですし、dendriteは自分自身と連結はしないと思います。 ニューラルネットは、いかにして オブジェクト間の時間を短くするか、という考え方だと思いますよ。 「感覚神経(入力)soma」◆-「脊髄soma」◆-「脳soma」◆-「脊髄soma」◆-「運動(出力)soma」 「感覚神経(入力)soma」◆-「脊髄soma」◆-「運動(出力)soma」 入力データが同じなら、キャッシュに保存した計算済みデータを出力する、ってのは、その典型じゃないですかね。 入力 -> キャッシュ比較 -> 計算 -> 出力     |            ^     ーーーーーーーーーーーーー| (等幅フォント、全角スペースで調整) > ループしたモデリングは相手に対する依存が強くなるので、お勧めできないということでした。 自分1つでループするのではなく、 A.b()というメソッドはB.b()というメソッド(またはプロパティ)に依存する。 B.a()はA.a()に依存する、というループだと思います。 ご参考まで。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.4

>>私も「モデル」を作るのであれば試行錯誤し、色々作りながらになると思いますが、「モデリング」は現時点で存在する「モデル」をどう記述するかという問題だと思うのですがいかがでしょか? 「どう記述するか」っていう意味に誤解があるようですね。日本語あるいは、数式でモデルの振る舞いを「記述する」ってことでしょうか?つまりはプログラミングでいえば、簡単な概要書を詳細な仕様書レベルに仕上げる話でしょうか?それとも、具体的に仕様書を見て、プログラムをどう設計するかって、話でしょうか? もし前者の話でしたら、私の専門外ですのでお役に立てないようです。 また、後者の話でしたら、前述したようなツールが自動生成するコードに「プログラム記述をまかせてしまう」って発想ですし、そのコードのアルゴリズム等が自分の考えに合わない場合は、別のツールを探せばよい(つまりは、自分で作らない)って考えだったので、こちらも残念ながら、私では力になれないようです。 >>このようなサイトでは「オブジェクト指向分析,設計においてシステムをモデル化する際の記法(図法)を規定した言語(ビジュアル・ランゲージ)です.」 と記載されています。 UMLへの評価は、日経BP社「オブジェクト指向でなぜつくるのか」を読んでいて思ったことです。もちろん、著者の意図と違うように私が受け取ったという可能性もありますが・・。

rocket2008
質問者

お礼

お返事遅くなり、すみません。 そうですか、色々ありがとうございました。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.3

>>このような場合一般的にはどのようにモデリングするのが最適なのか教えていただきたかったのです。 うーん、ちょっと手段と目的の認識に相違があるのかもしれません。 どれが最適なモデルか?っていうのは、「作ってテストしてみないとわからない」っていうのが私の印象です。なので、プログラムを作成して、動かしてみて、「ちょっと現実(予想)と違うなあ」なんて試行錯誤しながらモデルを変形して最適なものを探す。その過程でのプログラミングを楽にするためにツールを使うという考え方でした。 なので、質問が「スタートラインにおけるモデルをどう作るのが最適か?」ってことへの回答にはなっていないと思います。ただ、すでに質問欄にそれは存在すると思っていました。 >>lv4uさんのご意見ではUMLではこのようなものをモデリングするのは向かないということなのでしょうか? 情報を整理するっていう意味では有効でしょうが、上記のような「実際に動かして確認していく」って手法では、UMLはあまり役に立たないって思っています。さらにいうと、UMLとオブジェクト指向とは無関係なものだと思っています。(オブジェクト指向の流行に乗った便乗商法的な面が強かったと思ってます。無駄ってわけではないですが。)

rocket2008
質問者

補足

説明が悪く申し訳ありませんが、どうも認識のずれがあるようです。 >>どれが最適なモデルか? lv4uさんの認識は「モデル」の作り方の話しをされているようですが 私は、今現時点で存在しているモデルをどう記述するかという「モデリング」の話をしているのです。 私も「モデル」を作るのであれば試行錯誤し、色々作りながらになると思いますが、「モデリング」は現時点で存在する「モデル」をどう記述するかという問題だと思うのですがいかがでしょか? >>UMLとオブジェクト指向とは無関係なものだと思っています。 これは私は初めて聞きましたが、一般的なことなのですか? このようなサイトでは「オブジェクト指向分析,設計においてシステムをモデル化する際の記法(図法)を規定した言語(ビジュアル・ランゲージ)です.」と記載されています。 http://www.objectclub.jp/technicaldoc/uml/umlintro1 以上よろしくお願いします。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>最終的にはニューラルネット一種である、バックプロパゲーションを実装したいと思っています。 ということは、コンピュータの中にニューラルネットを構築するってことですね。 >>また、なぜ今回UMLを使ったかというと、以前はC言語で記述したのですが、保守性が悪いため、オブジェクト指向を勉強しようとおもいました。 今回はオブジェクト指向モデリングの勉強とJavaの勉強を兼ねるためです。 オブジェクト指向で保守性を上げるっていうのはわかります。UMLでモデル化してJavaにコード化ってことでしょうか。 だた、質問者さんの考えたモデルが有効って思われるなら、ループがあろうとも、それを含めて作成されればいいのではないでしょうか?研究開発って、「これはダメ」って通説に反することを偶然やってしまって大発見をするってこともあるわけですしね。 あと、この手のモデルって自動羊肉って冗談で言われる「オートマトン」で使うツールが使えるかもしれません。SPINとかSMCompilerなどです。ただ、Javaの勉強って目的には合わないかもしれませんが。 http://smc.sourceforge.net/ http://japanese.osstrans.net/software/smcompiler.html

rocket2008
質問者

補足

ご回答ありがとうございます。 なんと言えばいいのでしょう、何か新しい発見をしたいというわけではなく このような場合一般的にはどのようにモデリングするのが最適なのか教えていただきたかったのです。 lv4uさんのご意見ではUMLではこのようなものをモデリングするのは向かないということなのでしょうか?

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

ニューラルネットって初めて聞く単語ですね。参照サイトを見る限りでは、通信遅れを含んだネットワークのように思えました。 ところで、これをモデリングして、何を行いたいのでしょうか?UMLでやろうとするのが無理なのではないですか? 例えば、 ・各節と節との通信時間が○秒の場合、レスポンスが間に合うか、予定性能が発揮できるか調べたい。 ・結果が戻ってくるか、こないか確認したい。 なんて調査は、単なるお絵かきなモデルをUMLで作成しても、答えは得られないように思えますが、どうでしょう?

rocket2008
質問者

補足

lv4uさんご回答ありがとうございます。 最終的にはニューラルネット一種である、バックプロパゲーションを実装したいと思っています。 したがって、ニューラルネット自体が目的であり、lv4uさんがおっしゃったようなことが目的ではないように思います。 http://www.si.hirosaki-u.ac.jp/~slame/neuro/nnindex.html また、なぜ今回UMLを使ったかというと、以前はC言語で記述したのですが、保守性が悪いため、オブジェクト指向を勉強しようとおもいました。 今回はオブジェクト指向モデリングの勉強とJavaの勉強を兼ねるためです。

関連するQ&A

  • UMLモデリングで知っていてあたりまえの用語について

    先日あるConferenceに出席してきたのですが、 UMLモデリングで知っていて当たり前と言われてた用語を知りませんでした。わかる方教えてください。 「STS」、「7±2」、「契約による設計」 お願い致します。仕事で行ってきたのでレポートにまとめるのですが、意味が分からなくて困っています。

  • UMLモデリングツール

    どこで質問するべきか迷ったのですが、UMLのユースケース図やシーケンス図を作ったりできるモデリングツールはないでしょうか。できればタダで使用できるものを探しています。

  • E-RモデリングとUML

    E-RモデリングとUMLとの関係、どうなんでしょうか・・・ E-Rのエンティティ-インスタンスと、UMLのクラス-インスタンスとが対応しているように思います。 とすると、テーブル1つに対しオブジェクト1つ、となるのでしょうか?

  • システムモデリングについて

    今年から大学に三年次編入したものなんですが、システムモデリングという授業を取っているのですがまったくわかりません…レポートを出されたんですが、 1、二次微分のラプラス変換をしなさい 2、積分のラプラス変換をしなさい 3、RLC回路の伝達関数を求めよ、ただし初期値0 というものです。分かる方どなたかヒントでもなんでもいいので教えてください!お願いします…

  • UMLによるシステム設計について

    私はSIerの新入社員です。 システム設計について勉強しています。 特にウォータフォールモデルとUMLについてです。 今度、研修を兼ねて社内で使うツールの開発に参加することになりました。 ウォータフォールモデルに従って、要件定義から始めるのですが、 要件定義と外部設計の境界がわかりません。 要件定義書にはどこまで書くものなんでしょうか? あと、UMLの各モデルが、ウォータフォールモデルのどの工程に登場すべきなのかも今だわかっていません。 UMLのモデルについては大学で学びました。 しかし、それをウォータフォールモデルと繋げてイメージすることができません。 まず要求定義の工程ではUMLのどのモデルが出てくるのでしょうか? またユースケース文書はどの工程で書くのでしょうか? ↓私が想定しているユースケース文書です。 http://www.ibm.com/developerworks/jp/webservices/library/ws-tip-docusecase.html まとめますと、 (1)要件定義書にはどこまで書くのか(要件定義と外部設計の境) (2)ウォータフォールモデルの各工程にはどのUMLモデルが登場するのか (3)ユースケース文書はどの工程で書くのか(要件定義?外部設計?) 以上3つの質問です。 UMLはオブジェクト指向設計で用いると思うので、Javaのカテゴリで質問させていただきました。 会社によって設計書の書き方は大きく違うと思いますが、 「一般的にはこうしているはず」という話でも良いですし、 「うちの会社ではこうしている」という話でも良いですので、ぜひ教えてください。

  • UMLモデリング:抽象クラスを導入すべきかどうか

    オブジェクト指向設計に詳しい方,UMTP L3合格者の方,下記のような状況でクラスA1とクラスA2に抽象クラスAを導入するべきかしないべきかについて教えてください。 1 A1とA2に共通の属性は少ない。 2 ある抽象クラスBのサブクラスB1がA1に対する関連を持ち,B2がA2に対する関連を持つ。  また,これらの関連のロール名は同じ。 3 他の複数のクラスがサブクラスA1またはA2に対して関連を持っている。 1に関して:共通化できる箇所が少ないので抽象クラスを導入するメリットはないと思います。 2に関して:抽象クラスを導入することで,A1→B1とA2→B2の関連をA→Bの関連に纏められます。 3に関して:個々のサブクラスを意識する必要があるので抽象クラスを導入するメリットはないと思います。 抽象クラスを導入するメリットは,2に記載の関連を纏められるという点だけだと思いますが,まとめて良いかどうか疑問に思っています。A1->B2やA2->B1が許されないので,A->Bに纏めてしまうとモデルの意味が曖昧になりますし,コンパイル段階でA1->B2のような不正な組み合わせを検出できなくなります。しかし,Factoryとかを使って正しい組み合わせだけが生成されるようにすればよいので纏めるべきでしょうか。ロール名が同じなので,生成時だけ気をつければ同じ型で扱える方が良いようにも思います。 ちなみにこれはUMTP L3で出題された問題なのですが,細かい条件が提示されてなくて,Factoryの使用を前提にしてよいかは記載されていませんでした。記載がないということは前提にしない方が良いといことだと理解しています。 A1とA2はBから同じロール名で誘導されるという点を除けば,A1とA2は違う概念を表していると思います。A1とA2を独立したクラスにしておくべきか,抽象クラスで纏めるべきか教えてください。 宜しくお願いします。

  • UML技術者資格試験とUMLモデリング技能試験の違い

    UML技術者資格試験とUMLモデリング技能試験とは 内容、取得後の活用方法(?)としてはどのような 違いがあるのでしょうか。

  • 花期のショウブを見られる場所は?

    昨日までショウブの正体を知りませんでした。ショウブとは、これのことだと初めて知りました。 http://www.ootk.net/cgi/shikihtml/shiki_1625.htm  http://aoki2.si.gunma-u.ac.jp/BotanicalGarden/HTMLs/shoubu.html  http://aoki2.si.gunma-u.ac.jp/BotanicalGarden/HTMLs/izure.html  花期のショウブを見ておきたいです。自生ならば最善ですが植物園でもよいです。首都圏で見られる場所がありますか。 私鉄でも地下鉄でも車でもよいのですが、JRで言えば目安として山手線沿線、東京駅以北、東京駅以東が便利です。 何時頃、何処へ行けばよいですか。大まかに教えて下されば細目は調べます。花屋さんの店頭は勘弁です。 非常手段として植物園に電話をしてみる方法は気付いています。 よろしくお願いします。

  • UMLについて

     UMLってなんですか?検索してもイマイチ分からないんですけど・・・。 設計につかうとか・・・僕の留年がかかったレポートなんです、誰か助けて下さい。

  • UML ?

    ども、通信業界の者です。 UMLはまったくの畑違いですが PGを目指して本を読んだものの あまりにも独特なものでした。 エクリプスとかSQLとかプラグイン API・トムキャットはわかりますが どうもUMLはという気分です。 実際、UMLをそれなりに覚えなくても プログラミングの仕事につけますよね 概要だけでもいいですよね UMLを業務で使いこなせてる人とかって SE10年位やってるひとだけの上レベルの ひとだけですよね。

専門家に質問してみよう