Home

Awesome

"Emergent Communication through Negotiation"

Reproduce https://openreview.net/forum?id=Hk6WhagRW&noteId=Hk6WhagRW , "Emergent Communication through Negotation", ICLR 2018 anonymous submission.

To install

To run

python ecn.py [--disable-comms] [--disable-proposal] [--disable-prosocial] [--enable-cuda] [--term-entropy-reg 0.5] [--utterance-entropy-reg 0.0001] [--proposal-entropy-reg 0.01] [--model-file model_saves/mymodel.dat] [--name gpu3box]

Where options are:

Stdout layout

eg if we have:

   000000 4:4/0 7:5/5 9:4/4
                                      000000 4:5/0 6:1/5 7:2/4
   000000 4:0/0 7:0/5 9:1/4
                                      ACC
  r: 0.91

Then:

  [utterance]   [utility 0]:[proposal 0]/[pool 0] ... etc ...

One negotation is printed out every 3 seconds or so, using the training set; the other negotations are executed silently. There is no test set for now.

Results so far, summary

Agent sociabilityProposalLinguisticBothNone
Self-interested, random term>=0.80
Prosocial, random term~0.91~0.83~0.96>= 0.90

Notes:

Scenario details

Prop?Comm?Soc?Rend term?Term regUtt regProp regSubjective varianceRewardGreedy ratios
YYYY0.50.00010.01Low~0.96term=0.7345 utt=0.7635 prop=0.8304
Y-YY0.50.00010.01Medium-High~0.91term=0.6965 utt=0.0000 prop=0.8741
-YYY0.50.00010.01High~0.83term=0.6889 utt=0.7849 prop=0.8222
--YY0.50.00010.01Very low>= 0.90 (climbing)term=0.7781 utt=0.0000 prop=0.6006
YY-Y0.50.00010.01Very High~0.25term=0.7467 utt=0.9284 prop=0.8137
YY-Y0.050.00010.005Very Low>= 0.80 (climbing)term=0.9820 utt=0.7040 prop=0.6523

Training curves

proposal, comms, prosocial

Three training runs, identical settings:

<img src="images/comms_prop_soc_tests_threerunsc.png?raw=true" width="600" />

Proposal, no comms, prosocial

<img src="images/20171115_prop_nocomms_soc_800k.png?raw=true" width="600" />

No proposal, comms, prosocial

<img src="images/20171115_noprop_comms_soc400k.png?raw=true" width="600" />

No proposal, no comms, prosocial

<img src="images/20171115_noprop_nocomms_soc700k.png?raw=true" width="600" />

Proposal, comms, no social

Run 1, same entropy regularization as prosocial graphs:

<img src="images/nosoc_run1_termreg0_5_uttreg0_0001_propreg0_01.png?raw=true" width="600" />

Run 2, with reduced entropy regularization:

<img src="images/nosoc_term0_05_utt0_0001_prop0_005.png?raw=true" width="600" />

Unit tests

py.test -svx
python net_tests.py

(which allow close examination of specific parts of the network, policies, and so on; but which arent really 'unit-tests' as such, since neither termination criteria, nor success criteria)

Plotting graphs

Assumptions:

Setup/configuration:

Procedure

python merge.py --hostname [name in instances.yaml] [--logfile logs/log_20171104_1234.log] \
    [--title 'my graph title'] [--y-min 75 --y-max 85]

This will: