-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add docs to RTD, changes to readme, logo update (#10)
* Substitute logo for new one * WIP change badges in README.rst * WIP docs * fixup! WIP docs * docs fixes
- Loading branch information
Showing
25 changed files
with
224 additions
and
103 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,41 @@ | ||
Adaptation of Domain Graphs | ||
=========================== | ||
Adaptation of Graphs | ||
==================== | ||
|
||
There's info.. | ||
Domain Graphs & Optimization Graphs | ||
************************************ | ||
|
||
Problem domains usually work with their own graph representations that are suitable for specific needs. For example, in the case of AutoML problem (as in FEDOT framework) this is a pipeline of ML operations (a tree or a directed acyclic graph); | ||
in Bayesian optimization this is a graph of variables and their conditional dependencies (as in BAMT framework), in the task of neural architecture search (NAS) the domain graph is a neural network implemented in some deep learning framework, and so on. | ||
|
||
Universal graph optimizer abstracts from these details and works with internal graph representation (also called *optimization graph*). This design brings the following benefits: | ||
|
||
* **Generality**: graph optimizer is isolated from domain specifics and can be used for a wide range of domains. | ||
* **Domain nativeness**: at the same time isolation enables opaque domain-specific operators and rules, that domain experts can define. Graph fitness is also defined in domain terms. | ||
* **Effectiveness**: optimization works with suitable light-weight structure. | ||
* **Flexibility**: the only requirement for domain structure is convertibility to a graph form. This conversion is the task of the Adapter subsystem. | ||
|
||
Adapter Subsystem | ||
***************** | ||
|
||
.. image:: ../img/adapter-structure-v1.png | ||
|
||
**Adapter** provides automatic 2-way transformation between domain graphs and optimization graphs. Adapter transforms graphs on 2 levels, as schematically represented by the diagram. | ||
|
||
* First, on the initial input and the output of the optimizer. | ||
|
||
Initial domain graphs provided by the user are transformed to optimization graphs, and the resulting optimization graphs are transformed back to domain graphs. This the the outer border on the scheme between problem domain and graph optimizer. | ||
|
||
* Second, when graph optimizer calls verification rules and graph operators (e.g. evolutionary operators) defined for domain graphs. | ||
|
||
For example, in optimization of 3D structures we could define a domain crossover operator, that merges 3D meshes only along specific planes. To apply this opertor, optimizer first restores the domain graphs from the optimization graphs, then applies the operator, and then adapts the resulting domain graph back into internal representation. | ||
|
||
Framework users need to explicitly use the Adapter subsystem in two cases: | ||
|
||
* When they instantiate the framework for the new problem domain. | ||
|
||
In this case they must implement their own Adapter, inheriting from the base Adapter (see :py:class:`golem.core.adapter.adapter.BaseOptimizationAdapter`). | ||
|
||
* When they define custom rules or operators *that work on internal optimization graphs*. | ||
|
||
These can be graph verification rules (see :py:class:`golem.core.dag.graph_verifier.GraphVerifier` class) or custom operators for the evolutionary optimizer. This use-case is less common, because external users usually define rules or operators that work with the domain graphs. | ||
In this case users should mark these functions with ``@register_native`` decorator. This decorator tells the Adapter that the decorated function works directly on optimization graphs and does not require transformation of its arguments and/or return values. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,5 +11,4 @@ Advanced Topics | |
narrow_search | ||
multi_obj_search | ||
serialization | ||
interpolation | ||
|
||
nx-interop |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Interoperation with NetworkX | ||
============================ | ||
|
||
NetworkX adapter provides a two-way transformation between directed `networkx.DiGraph <https://networkx.org/documentation/stable/reference/classes/digraph.html>`_ and internal GOLEM Graph. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Adapter Subsystem | ||
================= | ||
|
||
.. automodule:: golem.core.adapter.adapt_registry | ||
:members: | ||
:no-undoc-members: | ||
|
||
.. automodule:: golem.core.adapter.adapter | ||
:members: | ||
:no-undoc-members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
Graph | ||
===== | ||
|
||
.. autoclass:: golem.core.dag.graph.Graph | ||
:members: | ||
:no-undoc-members: | ||
|
||
.. autoclass:: golem.core.dag.graph_node.GraphNode | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,16 @@ | ||
API Reference | ||
============= | ||
|
||
There are links to ``.rst`` files. Every file has to consist modules that have been built automaticaly... | ||
This is automatically generated API reference. | ||
|
||
Example: | ||
|
||
.. code:: | ||
.. automodule:: fedot.core.composer.composer | ||
:members: | ||
:no-undoc-members: | ||
.. autoclass:: fedot.core.composer.composer.Composer | ||
:members: | ||
:no-undoc-members: | ||
.. toctree:: | ||
:glob: | ||
:maxdepth: 1 | ||
|
||
adapter | ||
graph | ||
optimizer | ||
objective | ||
parameters | ||
profiler | ||
logging |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
Logging | ||
======= | ||
|
||
.. automodule:: golem.core.log | ||
:members: | ||
:no-undoc-members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Objective | ||
========= | ||
|
||
.. autoclass:: golem.core.optimisers.objective.objective.Objective | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
GraphOptimizer | ||
============== | ||
|
||
.. autoclass:: golem.core.optimisers.optimizer.GraphOptimizer | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Parameter classes | ||
================= | ||
|
||
.. autoclass:: golem.core.optimisers.optimizer.AlgorithmParameters | ||
:members: | ||
|
||
.. autoclass:: golem.core.optimisers.optimization_parameters.OptimizationParameters | ||
:members: | ||
|
||
.. autoclass:: golem.core.optimisers.optimization_parameters.GraphRequirements | ||
:members: | ||
|
||
.. autoclass:: golem.core.optimisers.optimizer.GraphGenerationParams | ||
:members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
Profiler | ||
======== | ||
|
||
MemoryProfiler | ||
-------------- | ||
|
||
.. automodule:: golem.utilities.profiler.memory_profiler | ||
:members: | ||
:no-undoc-members: | ||
|
||
TimeProfiler | ||
------------ | ||
|
||
.. automodule:: golem.utilities.profiler.time_profiler | ||
:members: | ||
:no-undoc-members: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,10 @@ | ||
Abstract Graph Search | ||
===================== | ||
|
||
There's info and links to notebooks and examples... | ||
This example is about the search for graphs that are closest to a target graph by some distance metric. | ||
|
||
Target graphs are generated using `networkx`. Both ordered and random graphs are used. | ||
|
||
For objective are used graph theoretic metrics defined on features of the graph and graph matrices. In particular, distance between spectres of graph matrices are used. Spectre of the graph defines its characteristic features (like number of components, clustering, and more). For details see the `this publication <https://api.semanticscholar.org/CorpusID:118711105>`_ about graph similarity. | ||
|
||
Full code of the example can be found `in this python file <https://github.com/aimclub/GOLEM/blob/main/examples/synthetic_graph_evolution/abstract_graph_search.py>`_. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,4 +23,4 @@ Content: | |
faq | ||
about | ||
|
||
.. |logo| image:: ../img/golem_logo.png | ||
.. |logo| image:: /img/golem_logo-02.png |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,16 @@ | ||
Introduction | ||
============ | ||
|
||
There's your super intro! | ||
GOLEM is an open-source AI framework for optimization and learning of structured graph-based models with meta-heuristic methods. It is centered around 2 ideas: | ||
|
||
1. Potential of meta-heuristic methods in complex problem spaces. | ||
|
||
Focus on meta-heuristics allows approaching kinds of problems where gradient-based learning methods (notably, neural networks) can't be easily applied, like optimization problems with multiple conflicting objectives or having combinatorial character. | ||
|
||
2. Importance of structured models in many problem domains. | ||
|
||
Graph-based learning enables solutions in the form of structured and hybrid probabilistic models, not to mention that a wide range of domain-specific problems have a natural formulation in the form of graphs. | ||
|
||
Together this constitutes an approach to AI that potentially leads to structured, intuitive, interpretable methods and solutions for a wide range of tasks. | ||
|
||
To see how you can use GOLEM go to the :doc:`Quick Start Guide </quick_start>`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.