# OpenCogPrime:ConceptDrivenProcedureLearning

## Concept-Driven Schema and Predicate Creation

In this section we will deal with the "conversion" of ConceptNodes into SchemaNodes or PredicateNodes. The two cases involve similar but nonidentical methods; we will begin with the simpler PredicateNode case.

### Concept-Driven Predicate Creation

Suppose we have a ConceptNode C, with a set of links of the form

```MemberLink Ai C, i=1,...,n
```

Our goal is to find a PredicateNode so that

1)

```MemberLink X C

implies

X within SatisfyingSet(P)
```

2)

```P is as simple as possible
```

This is related to the "Occam's Razor," Solomonoff induction related heuristic to be presented later in this chapter.

We now have an optimization problem: search the space of compound predicates for P that minimize the objective function f(P,C), defined as

```f(P,C) = w ||P| + (1-w) r(C,P)

r(C,P) =

GetStrength
SatisfyingSet(P)

0 < w < 1 a weight
```

This is an optimization problem over predicate space, which can be solved in an approximate way by the evolutionary programming methods described earlier.

The ConceptPredicatization CIM-Dynamic selects ConceptNodes based on

and launches an Evolutionary Learning Task focused on learning predicates based on the nodes it selects. A relevant system parameter here is CPRes, the amount of resources that the system has decided to spend on evolutionary optimization for concept predicatization. This may be expressed, most simply, in terms of a priority in [0,1]. This priority is balanced against the priorities of other processes, and is used by the MultipartAtomspaceController to tell the Evolutionary Optimization Unit-Group how much of its resources to devote to concept predicatization problems. The Evolutionary Optimization Unit Group then allocates or creates a Unit for each new problem that comes its way from one of the instances of the ConceptPredicatization CIM-Dynamic in the system.

### Concept-Driven Schema Creation

In the schema learning case, instead of a ConceptNode with MemberLinks and EvaluationLinks, we begin with a ConceptNode C with ExecutionLinks. These ExecutionLinks were presumably produced by inference (the only OCP cognitive process that knows how to create ExecutionLinks for non-ProcedureNodes).

The optimization problem we have here is: search the space of compound schemata for S that minimize the objective function f(S,C), defined as follows where ||S| refers to the estimated complexity of f (e.g. simply estimated as the size of the normalized Combo tree for S):

```f(S,C) = w ||S| + (1-w) r(S,P)

Q(S) = the set of pairs (X,Y) so that (ExecutionLink S X Y)

r(S,P) =

GetStrength