Amr Ahmed
Research at Google
Big Data and
Large Scale Inference: II
Wrapping up
• Distributed inference in latent variable models
– Star Synchroniza:on
– Delta aggrega:on
Wrapping up …
φ θ
z
w
α Prior over topic
mixtures
Topic-‐word distribu:on
Wrapping up …
φ θ
z
w α
• Global variables
– Φ: Topic distribu:on over words
• Local variables
– θ: topic mixing vector – Z: topic indicator
Wrapping up …
z
w
• Collapse global variables
– Φ
• Collapse local variables
– θ
• Couples all Zs
• Run collapsed sampler
P (z
di= k |w
di= w, z
di) / (n
dk+ ↵) n
kw+ n
k+ W
P (z di = k |w di = w, z di ) / (n dk + ↵) n kw +
n k + W
Wrapping up …
z
w
P (z
di= k |w
di= w, z
di) / (n
dk+ ↵) n
kw+ n
k+ W
P (z di = k |w di = w, z di ) / (n dk + ↵) n kw + n k + W
Global counts (global state) Local counts
(local state) Global State
n kw
, n k
Distributed Inference: LDA
θ
z
w α
φ
Distributed Inference: LDA
θ
z
w θ
z
w
α
φ
Distributed Inference: LDA
z
w z
w
Global State
n kw , n
k
Distributed Inference: LDA
z
w z
w
Global State
n kw , n
k
Global replica Global replica
General Architecture
• Star synchroniza:on
– Works when variables depend on each other via aggregates
• Counts, sums, etc.
– When state objects form an Abelian group
State 1 u1 u2 u3 State 2
State 1 u2 u1 u3 State 2
Mul:lingual LDA
• Each topic has a distribu:on over words
• Fits parallel documents
– Example: Wikipedia
What Is next?
• Can we fit any model only with those asynchronous primi:ves?
– No
• We need synchronous opera:ons
– Parameter op:miza:on
• EM style algorithm
– Non-‐collapsed global variables
The Need for Synchronous Processing
φ θ
z
w
α Prior over topic
mixtures
Topic-‐word distribu:on
What if we need to op:mize over α?
The Need for Synchronous Processing
φ θ
z
w α
• E-‐Step
– Run asynchronous collapsed sampler as before
• M-‐step
– Reach a barrier
– Collect values needed to op:mize α
– One machine op:mizes α – Broadcast value back
Distributed Sampling Cycle
Sample Z
Sample Z Sample Z Sample Z
Barrier
Write counts to memcached
Write counts to memcached
Write counts to memcached
Write counts to memcached
Collect counts
and sample Ω Do nothing Do nothing Do nothing
Barrier
Read Ω from
memcached Read Ω from
memcached Read Ω from
memcached Read Ω from
memcached
Op:mize α
Requires a reduc:on step
Asynchronous
Synchronous
Distributed Sampling Cycle
Sample Z Sample Z Sample Z Sample Z
Barrier
Write counts Write counts Write counts Write counts
Collect counts
and op:mize Do nothing Do nothing Do nothing
Barrier
Read α Read α Read α Read α
Up next
• Applica:on
– Mul:-‐domain user personaliza:on
– Non-‐parametric models: DPs, temporal DPs, etc – Temporal Modeling of user interests
– Mul:-‐task learning and computa:onal adver:sing
Modeling User Interests
User-‐1 User-‐2
Mul:-‐domain Personaliza:on
Computa:onal Adver:sing:
Mul:task learning
Mul:-‐Domain
Personaliza:on
Problem
Mul:-‐domain Personaliza:on
• Intui:on
– We observe user interac:on with news and movies – Can we predict his music taste?
• Interac:on defini:on
– A bag of words describing objects user interacts with
in a given domain
Example
User Meta Profile
User Music
Profile User News
Profile
Personalized News
Personalized
Music
Example
User Meta Profile
User Music
Profile User News
Profile User Movie
Profile
The Model
↵ ✓ z w
N User u’s interac:on with domain d
'
dA user’s interac6on with a domain is a bag of words.
A topic is a mixture of words.
x
uEach user has a meta-‐profile: x
u2 R k
p
Each domain has a latent matrix: d 2 R k ⇥t
dUser’s prior interest in a domain is
= log(1 + exp(⇥ d x u ))
Slide credit Yucheng Low
The Model
User Meta Profile
User Music
Profile User News
Profile User Movie
Profile
x
u2 R k
music
news
movie
lgt( music x u ) lgt( news x u ) lgt( movie x u )
lgt(x) = log(1 + exp(x))
Slide credit Yucheng Low
↵ ✓ w z
w 2 Wu,d
Music
News
Movies
↵ ✓ w z
w 2 Wu,d
x 1 x 2 x 3
1
2
3
Topic-‐>word table
Topic-‐>word table
Topic-‐>word table Slide credit Yucheng Low
Inference and Learning
↵ ✓ z w
N User u’s interac:on with domain p
p
x
uE-‐Step: sample local variables
'
dCollapse and synchronize M-‐Step
Op:mize via barrier
Distributed Sampling Cycle
Sample Z, x
For users Sample Z,x
For users Sample Z,x
For users Sample Z,x
For users
Barrier
Write counts to memcached
Write counts to memcached
Write counts to memcached
Write counts to memcached
Collect counts
and sample Ω Do nothing Do nothing Do nothing
Barrier
Read Ω from
memcached Read Ω from
memcached Read Ω from
memcached Read Ω from
memcached
Op:mize λ
Requires a reduc:on step
Distributed Sampling Cycle
Sample Z, x
For users Sample Z, x
For users Sample Z, x
For users Sample Z, x For users
Barrier
Write
sta:s:cs Write
sta:s:cs Write
sta:s:cs Write
sta:s:cs
Collect and
op:mize Do nothing Do nothing Do nothing
Barrier
Read Read Read Read
Results
• 2 domain dataset.
Frontpage and News clicks of 5.6 million users.
Frontpage/News: Ar:cle text for each click.
• Measure gain rela:ve to independent models on
each domain
Results
Front Page News
0 5 10 15 20 25 30
% Gain in Cosine Similarity
25 Features
50 Features
Analysis
sandra, oscar, oscars, red, carpet, bullock, golden, gown, bullocks, nominee, bestactress, sparkles, stunning,
vienna, bachelor, jake, pavelka, giraldi, finale, show, stars, dancing, love, season, :me, abc,
bacteria, fight, super, struggling, developed, doctors, resistant, lethal, virtually, drugs, an:bio:c, compe:tors, chad,
film, movie, movies, films, director, story,
avatar, james, :me, hollywood, big, make, hes, star,
Celebrity
Entertainment
Science
Science Fic6on
Non-‐parametric Mdoels
Non-‐parametric Models
• How many clusters?
• How many topics?
• Dimensionality of the model grows with the data
• Perfect for big data sedng where data keeps
arriving and we want to refine model structure
Parametric Mixture Models
c
iw
iN
π
φ
Κ
φ
kφ
1-‐ For Document wi
-‐ Sample ci ~ Mul:(π) -‐ Sample wi ~ Mult(φci)
wi
∝π1 ∝ πj ∝ πk
Genera:ve Process
Infinite Mixture Models
• Allows the number of mixtures to grow with the data
• They are called non-‐parametric models
– Means the number of effec:ve parameters grow with data – S:ll have hyper-‐parameters that control the rate of growth
• α: how fast a new cluster/mixture is born?
• G
0: Prior over mixture component parameters
• We can arrive at them from many angle
– Chinese Restaurant Process Mixtures – S:ck Breaking construc:on
– Random Measure View
Chinese Restaurant Process Mixture
-‐ For data point xi
-‐ Choose table j ∝ mj and Sample xi ~ f(φj) -‐ Choose a new table K+1 ∝ α
-‐ Sample φK+1 ~ G0 and Sample xi ~ f(φK+1) Genera:ve Process
φ
2φ
1φ
3α 6+
2 6+α
3 6+α
1
α α 6+
[Blackwell, D. and MacQueen 1973]
S:ck Breaking Construc:on
c
ix
i Nπ
φ
Κα
c
ix
i Nπ
φ
∞ G0Parametric Mixture Non-‐ Parametric Mixture
X
k
⇡ k
kMixture distribu:on =
?
[Sethuraman, 1994]
S:ck Breaking Construc:on
α
c
ix
i Nπ
φ
∞ G0X 1 k=1
⇡ k
kMixture distribu:on =
• φ
k~ G
0is called atom loca:on
• π
kis called atom weight
– π ~ GEM(α)
π1
π2
π3
φ1 φ2 φ3
S:ck Breaking Construc:on
α
c
ix
i Nπ
φ
∞ G0X 1 k=1
⇡ k
kMixture distribu:on =
• φ
k~ G
0is called atom loca:on
• π
kis called atom weight
– π ~ GEM(α)
v
k⇠ Beta(1, ↵)
⇡
k= v
kk 1
Y
i=1
(1 v
i)
v
1= ⇡
1(1 v
1) v
1S:ck Breaking Construc:on
α
c
ix
i Nπ
φ
∞ G0X 1 k=1
⇡ k
kMixture distribu:on =
• φ
k~ G
0is called atom loca:on
• π
kis called atom weight
– π ~ GEM(α)
v
k⇠ Beta(1, ↵)
⇡
k= v
kk 1
Y
i=1
(1 v
i)
v
1= ⇡
1(1 v
1) v
1S:ck Breaking Construc:on
α
c
ix
i Nπ
φ
∞ G0X 1 k=1
⇡ k
kMixture distribu:on =
• φ
k~ G
0is called atom loca:on
• π
kis called atom weight
– π ~ GEM(α)
v
k⇠ Beta(1, ↵)
⇡
k= v
kk 1
Y
i=1
(1 v
i)
v
1= ⇡
1(1 v
1)
(1 v
1)(1 v
2)
v
1v
2(1 v
1)
Dirichlet Process Mixture View
• G is always discreet (we have just constructed it)
• G =
• G is a random measure, why?
G ⇠ DP (↵, G
0)
✓
i⇠ G x
i⇠ f(✓
i)
α
θ
ix
i NG G0
X1 k=1
⇡k k
E[G] = G
0V ar[G] = ↵
[Ferguson, 1973]
Infinite Mixture Models
• Chinese Restaurant Process
– Useful for construc6ng Gibbs sampling algorithms [Neal 1998]
• S:ck-‐breaking construc:on
– Useful for deriving Varia:onal inference algorithms.
[Blei and Jordan 2004]
• DP view
– Useful for conceptual understanding (esp. later in the
tutorial) [Teh et. al., 2006]
Chinese Restaurant Process Mixture
-‐ For data point xi
-‐ Choose table j ∝ mj and Sample xi ~ f(φj) -‐ Choose a new table K+1 ∝ α
-‐ Sample φK+1 ~ G0 and Sample xi ~ f(φK+1) Genera:ve Process
φ
2φ
1φ
3α 6+
2 6+α
3 6+α
1
α α 6+
Inference Via Gibbs Sampling
• Construct a Markov chain over cluster indicators for each data point c i and cluster parameters φ
P (c
i|c
i, ↵, G
0) /
⇢ m
kp(x
i|
k) for existing k
↵ R
p(x
i| )p( |G
0)d for a new cluster
P ( k |c, G 0 ) / Y
c
i=k
p(x i | )P ( |G 0 )
Inference Via Collapsed Gibbs Sampling
• If G 0 is conjugate to the likelihood func:on p(.|φ) then we can integrate it out.
P (c
i|c
i, ↵, G
0) / 8 >
<
> :
m
kp ⇣
x
i|{x
j}
cji=k⌘
for existing k
↵ R
p(x
i| )p( |G
0)d for a new cluster
Dynamic Models
Dynamic Non-‐Parametric Models
• Evolve atom weights
• Evolve atom loca:ons
• Many models
– What assump:ons they are making
– More expressive the harder the inference – Examples
• RCRP (Ahmed and Xing, 2008)
• Time-‐Varying Polya-‐Urn (Caron et. Al. 2007)
• Dependent DPs and Ordered-‐DPs (Griffin et. Al. 2004)
• Normalized Gamma Processes (Rao and Teh 2009)
Recurrent CRP (RCRP) [Ahmed and Xing 2008]
• Adapts the number of mixture components over :me
– Mixture components can die out
– New mixture components are born at any :me
– Retained mixture components parameters evolve according
to a Markovian dynamics
The Recurrent Chinese Restaurant Process
φ
2,1φ
1,1φ
3,1T=1
Dish eaten at table 3 at :me epoch 1
OR the parameters of cluster 3 at :me epoch 1
-‐ Customers at :me T=1 are seated as before:
-‐ Choose table j ∝ mj,1 and Sample xi ~ f(φj,1) -‐ Choose a new table K+1 ∝ α
-‐ Sample φK+1,1 ~ G0 and Sample xi ~ f(φK+1,1) Genera:ve Process
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,1φ
3,1m'1,1=2 m'2,1=3 m'3,1=1
The Recurrent Chinese Restaurant Process
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,1φ
3,1m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,1φ
3,1α 6+
2 6+α
3 6+α
1
α α 6+
m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,1φ
3,1α 6+
2
m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,2φ
3,1Sample φ1,2 ~ P(.| φ1,1)
m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,1φ
1,2φ
3,1α + +
+ 1 6
2
1 6+1+α
3 6+1+α
1
α α
+ 6+1
And so on ……
m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,2φ
1,2φ
3,1At the end of epoch 2
φ
4,2Newly born cluster Died out cluster
m'1,1=2 m'2,1=3 m'3,1=1
φ
2,1φ
1,1φ
3,1T=1
T=2
φ
2,2φ
1,2φ
3,1N1,1=2 N2,1=3 m'3,1=1
φ
4,2T=3
φ
2,2φ
1,2φ
4,2m'4,2=1 m'2,2=2
m'1,2=2
Recurrent Chinese Restaurant Process
• Can be extended to model higher-‐order dependencies
• Can decay dependencies over :me
– Pseudo-‐counts for table k at :me t is
History size
Decay factory Number of customers sidng at table K at :me epoch t-‐h
∑
= - -
⎟
⎠
⎞
⎜
⎝
⎛
H
h k t h h
m
e
1 , ρ
φ2,1
φ1,1 φ3,1
T=1
T=2
φ
2,2φ
1,2φ
3,1m'1,1=2 m'2,1=3 m'3,1=1
φ
4,2T=3
φ
2,2φ
1,2φ
4,2∑
=
- -
⎟
⎠
⎞
⎜
⎝
⎛
H
h k t h h
m
e
1 , ρ
m'2,3
m'2,3 =
Tracking Users Interest
Characterizing User Interests
• Short term vs long-‐term
Jan April July Oct
Music
Housing
Furniture
Buying a car
Travel plans
Characterizing User Interests
• Short term vs long-‐term
• Latent
Jan April July Oct
millage
fast
mortgage Gaga
seafood
Barcelona
used
Problem formula:on
Input
• Queries issued by the user or tags of watched content
• Snippet of page examined by user
• Time stamp of each ac:on (day resolu:on)
Output
• Users’ daily distribu:on over interests
• Dynamic interest representa:on
• Online and scalable inference
• Language independent
Flight London Hotel weather
School Supplies Loan semester classes
registra:on housing rent
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent Input
• Queries issued by the user or tags of watched content
• Snippet of page examined by user
• Time stamp of each ac:on (day resolu:on)
Output
• Users’ daily distribu:on over interests
• Dynamic interest representa:on
• Online and scalable inference
• Language independent
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent
When to show a financing ad?
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent
When to show a financing ad?
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent
When to show a financing ad?
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent
When to show a hotel ad?
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent
When to show a hotel ad?
Problem formula:on
Flight London Hotel weather
Travel
Back To school
finance School
Supplies Loan semester classes
registra:on housing rent Input
• Queries issued by the user or tags of watched content
• Snippet of page examined by user
• Time stamp of each ac:on (day resolu:on)
Output
• Users’ daily distribu:on over interests
• Dynamic interest representa:on
• Online and scalable inference
• Language independent
Mixed-‐Membership Formula:on
job Career Business Assistant
Hiring Part-‐:me Recep:onist Car
Blue Book Kelley Prices Small Speed
large
Bank Online
Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Diet Cars Job Finance
Objects
Mixtures Degree of membership
Job Hiring speed price part-‐6me Camry
Career opening bonus package
card diet calories loan recipe milk
Weight lb kg
In Graphical Nota:on
In Polya-‐Urn Representa:on
• Collapse mul:nomial variables:
• Fixed-‐dimensional Hierarchal Polya-‐Urn representa:on
– Chinese restaurant franchise
x
x
Food Chicken
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Car speed offer camry accord career
Global topics trends
Topic
word-‐distribu:ons
User-‐specific topics trends (mixing-‐vector)
User interac:ons: queries,
keyword from pages viewed
Food Chicken
Car speed offer camry accord career
• For each user interac:on
• Choose an intent from local distribu:on
• Sample word from the topic’s word-‐distribu:on
• Choose a new intent ∝ λ
• Sample a new intent from the global distribu:on
• Sample word from the new topic word-‐
distribu:on Genera:ve Process
………
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza
Car speed offer camry accord career
• For each user interac:on
• Choose an intent from local distribu:on
• Sample word from the topic’s word-‐distribu:on
• Choose a new intent ∝ λ
• Sample a new intent from the global distribu:on
• Sample word from the new topic word-‐
distribu:on Genera:ve Process
………
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza
Car speed offer camry accord career
• For each user interac:on
• Choose an intent from local distribu:on
• Sample word from the topic’s word-‐distribu:on
• Choose a new intent ∝ λ
• Sample a new intent from the global distribu:on
• Sample word from the new topic word-‐
distribu:on Genera:ve Process
………
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza hiring
Car speed offer camry accord career
• For each user interac:on
• Choose an intent from local distribu:on
• Sample word from the topic’s word-‐distribu:on
• Choose a new intent ∝ λ
• Sample a new intent from the global distribu:on
• Sample word from the new topic word-‐
distribu:on Genera:ve Process
………
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza millage
Car speed offer camry accord career
• For each user interac:on
• Choose an intent from local distribu:on
• Sample word from topic’s word-‐distribu:on
• Choose a new intent ∝ λ
• Sample a new intent from the global distribu:on
• Sample from word the new topic word-‐
distribu:on Genera:ve Process
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza millage
Car speed offer camry accord career
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Problems
-‐ Sta:c Model
-‐ Does not evolve user’s interests
-‐ Does not evolve the global trend of interests
-‐ Does not evolve interest’s distribu:on over terms
Food Chicken
pizza millage
Car speed offer camry accord career
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
At 6me t At 6me t+1
Build a dynamic model Connect each level
using a RCRP
At 6me t At 6me t+1
At 6me t+2 At 6me t+3
User 1 process
User 2 process
User 3 process
Global
process m m'
n n'
Which :me kernel to
use at each level?
Pseudo counts
= *Decay factor
Food Chicken
pizza millage
Car speed offer camry accord career
At 6me t
Observa:on 1
-‐ Popular topics at :me t are likely to be popular at :me t+1
- φk,t+1 is likely to smoothly evolve from φk,t
At 6me t+1
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Food Chicken
pizza millage
Car speed offer camry accord career
At 6me t At 6me t+1
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Blue Book Kelley Prices Small Speed large
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
Observa:on 1
-‐ Popular topics at :me t are likely to be popular at :me t+1
- φk,t+1 is likely to smoothly evolve from φk,t
Car Al6ma Accord Book Kelley Prices Small Speed
φk,t+1 ∼ Dir(βk,t+1) φk,t
Car Blue Book Kelley Prices Small Speed large
Intui:on
Captures current trend of the car industry (new release for e.g.)
~
Food Chicken
pizza millage
Car speed offer camry accord career
At 6me t At 6me t+1
Observa:on 2
-‐ User prior at :me t+1 is a mixture of the user short and long term interest
How do we get a prior that captures both long
and short term interest?
job Career Business Assistant Hiring Part-‐:me
Recep:o nist Car
Al:ma Accord Blue Book Kelley Prices Small Speed
Bank Online Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
All
week
job Career Business Assistant
Hiring Part-‐:me Recep:onist Car
Blue Book Kelley Prices Small Speed
large
Bank Online
Credit Card debt porzolio
Finance Chase
Recipe Chocolate
Pizza Food Chicken
Milk Bu{er Powder
month
Time t t+1
Food Chicken pizza
recipe job hiring
Part-‐:me Opening salary
food chicken Pizza millage Kelly
recipe cuisine
Diet Cars Job Finance
Prior for user ac:ons at :me t μ
μ2 μ3