Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about Content of Actions #1

Open
andrewjong opened this issue Aug 8, 2019 · 1 comment
Open

Question about Content of Actions #1

andrewjong opened this issue Aug 8, 2019 · 1 comment

Comments

@andrewjong
Copy link

andrewjong commented Aug 8, 2019

Hi Mr. Rosenbaum,

Really nice work! I have a question from the forward() function in EXAMPLES.md.

    y, meta, actions = self._initialization(y, tasks=tasks)
    y, meta, task_actions = self._per_task_assignment(y, meta, actions)
    y, meta, routing_actions_1 = self._decision_1(y, meta, task_actions)
    y, meta, _ = self._selection_1(y, meta, routing_actions_1)

What is the difference between the contents of actions returned by the init layer, task_actions from PerTaskAssignment, and routing_actions from the decision layers? Why do we pass task_actions to each decision layer and routing_actions to each selection layer? Furthermore, why do we throw away the _ actions returned by the selection layers?

Could you help me understand, please? Thanks!

@cle-ros
Copy link
Owner

cle-ros commented Aug 8, 2019

Hi Andrew!

Thanks for that question. The example is slightly misleading, as actions is None anyways. Here's the full explanation as to what the different actions are:

actions, is None, and is just a placeholder so that all of the different modules (including initialization) have the same return signature. I'll update the example and replace it with _, or some other variable name that emphasizes this.

task_actions and routing_actions are two different hierarchies of actions. In the paper, and more importantly in this tech report, we investigate hierarchical routing actions. In the original paper, the higher hierarchy was given by the task labels, as these de facto act as hardcoded actions. In the dispatching paper, the higher hierarchy is also learned.
Thus, task_actions are used to select one of the agents implementing decision_1. routing_actions, in turn, then select the actual module.
More intuitively, the network implemented in that example assigns a separate agent to each task. The task_actions assign a sample to the agent corresponding to the task (this happens in _decision_1). That particular subagent selected by that task label, in turn, selects the routing_actions, which are then used to select the module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants