- 예제 : 여기서는 음성인식 시스템을 예로 들었다. 음성인식 프로그램은 단지 하나의 단어를 받아들일 뿐만 아니라 구문과 단어가 특정한 application에 필요한 단어나 구문론에 맞는 것으로 제한된 문장 전체를 받아 들인다. 원하는 output은 그 음성 인식한것에 맞는 기계적인 표현으로 바꾸는 것인데 이 변환 과정에는 음성을 음파적으로 인식하는 것과, 언어학적인 면에서 인식하는것과, 통계적인 전문성에서 인식하는 것이 필요하다.
- 환경 : 적당한 solution이 아직 없는 성숙하지 않은 영역
- 생각해야할 문제 : 각각의 문제에 대한 해결책은 다른 표현이나 paradigms 이 필요하다. 많은 경우에 어떻게 '부분적인 문제들을 풀어주는 해결책'이 어떻게 조합되어야 하는지에 대해서 미리 정의된 전략은 없다. 아래의 내용은 이런 종류의 문제를 푸는데 영향을 끼지치는 force(이 패턴이 사용되는 경우?)들이다.
- 적당한 시간에 완전한 해결책을 찾는 것이 불가능 하다 - 10개의 단어(1000개중 하나)를 조합하여 가능한 구문의 수=>(1000)의 10승 과 같은 예
- 그 영역이 미성숙해서, 같은 하부 task에 여러가지 알고리즘을 사용한다.
- 각 부분의 문제를 풀때 다양한 알고리즘이 존재한다.
- input은 intermediate 와 마지막 result와 마찬가지로 다양한 표현이 있다. 알고리즘들은 다양한 paradigm들에 의해서 수행된다.
- 하나의 알고리즘은 보통 다른 알고리즘의 결과 위에서 작동한다.
- 부정확한 데이터와 근사적인 해결책(solution)들이 포함된다.
- 각각 분리된 알고리즘을 채용하는 채용하는 것은 잠재적인 평형 관계를 유도한다.
- 모든 부분적인 문제들은 같은 knowledge 표현을 사용하여 해결된다. 그러나 input으로 다양한 표현이 올 수 있다.
- 전문적인 시스템 구조는 application of knowledge에 대해서 단지 하나의 추론 엔진을 제공한다. 다양한 표현에 대한 다양한 부분적인 문제들은 분리된 추론 엔진을 필요로 한다.
- -
- 해결책(solution) : Blackboard 구조의 바탕에 깔린 개념은 공동의 데이터 구조에 대해서 협동적으로 작동하는 독립된 프로그램들의 집합이다. 그 독립적인 프로그램들은 서로 다른 프로그램을 호출하지 않고 또한 그것의 행동에 대해 미리 정의된 순서는 없다. 대신에 시스템의 방향은 주로 현재의 상태나 진행(progress)에 의해 결정된다. 데이터-관리 조종 체계(data-directed control regime)는 opportunistic problem solving 이라고도 불린다. moderator(중재자) component는 만약 하나 이상의 component가 contribution을 만들수 있다면 프로그램들이 실행되는 순서를 결정한다.
- 구조 : 자신의 시스템을 blackboard(knowledge source들의 집합, control components)라고 불리우는 component로 나누어라. blackboard는 중앙 데이터 저장소이다. solution space와 control data들의 요소들이 여기에 저장된다. 하나의 hypothesis는 보통 여러가지 성질이 있다. 그 성질로는 추상 레벨과 추측되는 가설의 사실 정도 또는 그 가설의 시간 간격(걸리는 시간을 말하는거 같다.)이다. 'part-of'또는'in-support of'와 같이 가설들 사이의 관계를 명확이 하는 것은 보통 유용하다. blackboard 는 3차원 문제 공간으로 볼 수도 있다. X축 - time, Y축 - abstraction, Z축 - alternative solution. knowledge source들은 직접적으로 소통을 하지 않는다. 그들은 단지 blackboard에서 읽고 쓸뿐이다. 그러므로 knowledge source 들은 blackboard 의 vocabulary들을 이해해야 한다. 각 knowledge source들은 condition부분과 action부분으로 나눌 수 있다. condition 부분은 knowledge source가 기여를 할수 있는지 결정하기 위해서 blackboard에 적으면서 현재 solution process 의 상태를 계산한다. action 부분은 blackboard의 내용을 바꿀 수 있는 변화를 일으킨다. control component 는 루프를 돌면서 blackboard에 나타나는 변화를 관찰하고 다음에 어떤 action을 취할지 결정한다. blackboard component는 inspect와 update의 두가지 procedure를 가지고 있다.
~cpp
Class : BlackBoard
Responsibility : Manages central data
Collaborators : -
Class : Knowledge Source
Responsibility : Evaluates its own applicability, Computes a result, Updates Black board
Collaborators : Blackboard
Class : Control
Responsibility : Monitors Blackboard, Schedules Knowledge Source activations
Collaborator : Blackboard, Knowledge Source
- Dynamices(동작)
- 다음 아래의 내용들은 blackboard 구조의 행동에 대한 서술이다.
- control component의 main loof가 시작된다.
- nextSource() 먼저 blackboard를 관찰함으로써 어떤 knowledge source가 잠재성있는 공헌자인지 결정한다.
- nextSource() 각 후보 knowledge source의 condition 부분을 불러낸다.
- control component는 불러낼 knowledge source와 앞으로의 작업에 사용될 하나의 hypothesis나 hypothesis 집합을 선택한다. 예제에서는 condition 부분의 결과에 의해서 그 선택이 이루어졌다.
- 구현(implementation) : blackboard pattern을 구현하려면 다음과 같은 단계를 수행하여라.
- 1.문제(problem)를 정의 하여라
- 문제의 영역과 knowledge의 일반적인 영역들을 명확히 하는 것은 해결책(solution)을 발견하는데 필요하다.
- 시스템에 대한 input을 정밀하게 조사하여라.
- 시스템의 output을 정의하여라
- 사용자가 시스템과 어떻게 서로 작용하는지 자세히 말하여라.
- 2.그 문제에 대한 solution space(해결 공간)을 정의하여라.
~cpp
top-level solution - highest abstraction level
imtermediate solution - other level(except highest abstraction level)
complete solution - solution which solve whole problem
partial solution - solution which solve part of the problem
complete solution은 intermediate 레벨에 속할수 있고, partial solution은 아마도 top 레벨일 것이다.(무슨말이지?ㅡㅡ;)