Yoon, Tessler, Goodman and Frank (2020): Polite Speech Emerges From Competing Social Goals #
This file formalizes [YTGF20]'s Rational Speech Act model of polite speech, in which a
speaker trades off three goals: to be informative, to be kind, and to appear informative and
kind. In the experimental domain Ann rates Bob's poem on a scale of zero to three hearts and
answers with one of four adjectives, plain or negated. The literal listener updates a uniform
prior over states with the soft lexicon elicited in the norming experiment (meaning, l0);
the first-order speaker maximizes a mixture of informational and social utility minus cost,
φ · ln P_L0(s | w) + (1 − φ) · E_L0[V(s)] − C(w), (5) (util, speaker); the pragmatic
listener infers the state and the speaker's goal weight jointly, (4) (listener); and the
second-order polite speaker adds presentational utility, the log probability the pragmatic
listener assigns to the projected goal weight, (3), inside the total utility (2)
(s2Utility, s2Speaker, (1)).
The first-order predictions of Figure 2 are theorems over the free parameters. A speaker with
no weight on informativity prefers "not terrible" to "terrible" exactly when the extra cost of
negation is below its social gain (social_prefers_indirect_iff), and prefers "amazing" to
"not amazing" at every cost (social_prefers_positive); a speaker with no weight on kindness
prefers the direct form at both ends of the scale (informative_prefers_direct,
informative_prefers_direct_positive), and never produces an utterance whose literal
probability at the true state is zero (speaker_apply_eq_zero_of_meaning_eq_zero).
Implementation notes #
- The lexicon is the acceptance count of each utterance at each state among the 49
participants in the released norming data (
acceptance); the paper's Bayesian data analysis places a Beta posterior on each acceptance probability instead. An utterance with zero acceptance at a state has literal probability zero there, and its score is⊥for every speaker with some weight on informativity, since the pure-social speaker alone ignores the literal probability. - The listener's prior over the goal weight
φis uniform on the unit interval; it is discretized to five points (Phi) so that the joint prior isuniformOn. - Cost is the paper's cost of negation
c(Figure 4): a plain utterance costs 1 and a negated onec, and it sits inside the utility scaled byαas in (2); the released model realizes it as an utterance prior instead. - Table 2's maximum a posteriori goal weights for the full model are recorded as data
(
tableTwo); the model comparison of Table 1 is outside the scope of the formalization.
References #
States, utterances, goals #
The rating a poem deserves, in hearts.
- h0 : HeartState
- h1 : HeartState
- h2 : HeartState
- h3 : HeartState
Instances For
Equations
- YoonEtAl2020.instDecidableEqHeartState x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- YoonEtAl2020.instReprHeartState = { reprPrec := YoonEtAl2020.instReprHeartState.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
Equations
The subjective value V(s) of a state, the number of hearts.
Equations
Instances For
Equations
- YoonEtAl2020.instDecidableEqAdjective x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- YoonEtAl2020.instReprAdjective = { reprPrec := YoonEtAl2020.instReprAdjective.repr }
Equations
- One or more equations did not get rendered due to their size.
Equations
An utterance is an adjective, plain or negated, as in it was X or it wasn't X.
Equations
- YoonEtAl2020.Utterance = (YoonEtAl2020.Adjective × Bool)
Instances For
The speaker's goal condition in the production experiment.
- informative : GoalCondition
- kind : GoalCondition
- both : GoalCondition
Instances For
Equations
- YoonEtAl2020.instDecidableEqGoalCondition x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- YoonEtAl2020.instReprGoalCondition = { reprPrec := YoonEtAl2020.instReprGoalCondition.repr }
Equations
- YoonEtAl2020.instDecidableEqPhi x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- YoonEtAl2020.instReprPhi = { reprPrec := YoonEtAl2020.instReprPhi.repr }
Equations
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p0 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p0")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p25 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p25")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p50 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p50")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p75 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p75")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p100 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p100")).group prec✝
Instances For
Equations
- YoonEtAl2020.instFintypePhi = { elems := { val := ↑YoonEtAl2020.Phi.enumList, nodup := YoonEtAl2020.Phi.enumList_nodup }, complete := YoonEtAl2020.instFintypePhi._proof_1 }
Equations
- YoonEtAl2020.instInhabitedPhi = { default := YoonEtAl2020.instInhabitedPhi.default }
Equations
The value of each goal weight.
Equations
- YoonEtAl2020.Phi.p0.val = 0
- YoonEtAl2020.Phi.p25.val = 1 / 4
- YoonEtAl2020.Phi.p50.val = 1 / 2
- YoonEtAl2020.Phi.p75.val = 3 / 4
- YoonEtAl2020.Phi.p100.val = 1
Instances For
The soft lexicon #
The number of the 49 norming participants who accepted the utterance at the state (Figure 2, top left), from the released norming data.
Equations
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible false YoonEtAl2020.HeartState.h0 = 49
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible false YoonEtAl2020.HeartState.h1 = 26
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible false YoonEtAl2020.HeartState.h2 = 0
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible false YoonEtAl2020.HeartState.h3 = 1
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible true YoonEtAl2020.HeartState.h0 = 2
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible true YoonEtAl2020.HeartState.h1 = 22
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible true YoonEtAl2020.HeartState.h2 = 44
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.terrible true YoonEtAl2020.HeartState.h3 = 43
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad false YoonEtAl2020.HeartState.h0 = 49
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad false YoonEtAl2020.HeartState.h1 = 45
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad false YoonEtAl2020.HeartState.h2 = 0
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad false YoonEtAl2020.HeartState.h3 = 0
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad true YoonEtAl2020.HeartState.h0 = 3
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad true YoonEtAl2020.HeartState.h1 = 7
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad true YoonEtAl2020.HeartState.h2 = 47
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.bad true YoonEtAl2020.HeartState.h3 = 44
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good false YoonEtAl2020.HeartState.h0 = 1
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good false YoonEtAl2020.HeartState.h1 = 2
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good false YoonEtAl2020.HeartState.h2 = 47
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good false YoonEtAl2020.HeartState.h3 = 49
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good true YoonEtAl2020.HeartState.h0 = 48
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good true YoonEtAl2020.HeartState.h1 = 46
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good true YoonEtAl2020.HeartState.h2 = 2
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.good true YoonEtAl2020.HeartState.h3 = 1
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing false YoonEtAl2020.HeartState.h0 = 1
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing false YoonEtAl2020.HeartState.h1 = 1
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing false YoonEtAl2020.HeartState.h2 = 7
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing false YoonEtAl2020.HeartState.h3 = 47
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing true YoonEtAl2020.HeartState.h0 = 47
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing true YoonEtAl2020.HeartState.h1 = 47
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing true YoonEtAl2020.HeartState.h2 = 38
- YoonEtAl2020.acceptance YoonEtAl2020.Adjective.amazing true YoonEtAl2020.HeartState.h3 = 0
Instances For
The soft literal meaning 𝓛(s) of an utterance is its acceptance proportion at the state.
Equations
- YoonEtAl2020.meaning u s = ↑(YoonEtAl2020.acceptance u.1 u.2 s) / 49
Instances For
The lexicon is soft, with values in [0, 1].
A plain adjective costs 1, and a negated one the cost of negation c.
Equations
- YoonEtAl2020.cost c u = if u.2 = true then c else 1
Instances For
The literal listener #
With a uniform state prior, P_L0(s | w) = 𝓛(s) / Σ_s' 𝓛(s').
The lexicon mass of an utterance, the literal listener's normalizer.
Equations
- YoonEtAl2020.semMass u = ∑ s : YoonEtAl2020.HeartState, YoonEtAl2020.meaning u s
Instances For
P_L0(s | u), the literal listener's posterior under the uniform prior.
Equations
- YoonEtAl2020.l0 u s = YoonEtAl2020.meaning u s / YoonEtAl2020.semMass u
Instances For
E_{P_L0(· | u)}[V(s)], the social utility of u, which does not depend on the true
state.
Equations
- YoonEtAl2020.ev u = ∑ s : YoonEtAl2020.HeartState, YoonEtAl2020.l0 u s * s.value
Instances For
The first-order speaker #
The first-order utility U(w; s; φ) = φ · ln P_L0(s | w) + (1 − φ) · E_L0[V(s)] − C(w),
scaled by the optimality α, as an extended-real score over the situations (s, φ). An
utterance of literal probability zero at s scores ⊥ for every φ ≠ 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every situation has an applicable utterance, the adjective accepted at its state.
The first-order speaker (5) is the score speaker of util.
Equations
Instances For
Speaker preference at a situation is utility comparison.
An utterance of literal probability zero at the true state is never produced by a speaker with some weight on informativity.
First-order predictions (Figure 2, top right) #
The pure-social speaker compares social utility net of cost, at every state.
The pure-social speaker prefers the indirect "not terrible" to "terrible" exactly when the extra cost of negation is below the social gain of the negation.
The pure-social speaker prefers "amazing" to "not amazing", since the direct form is both kinder and no costlier.
The pure-informative speaker prefers the direct "terrible" at zero hearts, since the literal listener puts far more of the mass of "terrible" than of "not terrible" on that state, and the direct form is no costlier.
The pure-informative speaker prefers the direct "amazing" at three hearts, where "not
amazing" is never accepted, so its score is ⊥.
The pragmatic listener, (4) #
The uniform joint prior over states and goal weights.
Equations
- YoonEtAl2020.prior = ProbabilityTheory.uniformOn Set.univ
Instances For
Every utterance is accepted by someone at zero hearts, so every utterance is heard with positive probability.
The pragmatic listener (4) infers the state and the goal weight (s, φ) from the utterance.
Its first marginal is P_L1(s | w) and its second P_L1(φ | w), the probability inside (3).
Equations
Instances For
The second-order polite speaker, (1)–(3) #
The weights ω on the informational, social and presentational utilities.
- wInf : ℚ
- wSoc : ℚ
- wPres : ℚ
Instances For
Table 2 gives the maximum a posteriori goal weights of the full model in each goal condition.
Equations
- YoonEtAl2020.tableTwo YoonEtAl2020.GoalCondition.both = { wInf := 36 / 100, wSoc := 11 / 100, wPres := 54 / 100 }
- YoonEtAl2020.tableTwo YoonEtAl2020.GoalCondition.informative = { wInf := 36 / 100, wSoc := 2 / 100, wPres := 62 / 100 }
- YoonEtAl2020.tableTwo YoonEtAl2020.GoalCondition.kind = { wInf := 25 / 100, wSoc := 31 / 100, wPres := 44 / 100 }
Instances For
Table 2 gives the maximum a posteriori projected goal weight φ of the full model in each
goal condition.
Equations
Instances For
The total utility (2), with the presentational utility (3), is
ω_inf · ln P_L1(s | w) + ω_soc · E_{P_L1(· | w)}[V] + ω_pres · ln P_L1(phiHat | w) − C(w), for the
projected goal weight phiHat.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The second-order speaker (1) is the score speaker of the total utility scaled by α.
Equations
- YoonEtAl2020.s2Speaker α c W phiHat = ProbabilityTheory.Kernel.softmax fun (s : YoonEtAl2020.HeartState) (u : YoonEtAl2020.Utterance) => ↑(α * YoonEtAl2020.s2Utility α c W phiHat s u)