Ernie - Enhanced Representations via Knowledge
# ERNIE - Enhanced Representations via Knowledge
## Introduction & Motivation
ERNIE: enhanced representations via knowledge masking. Entity-aware pre-training. Applications: improved semantic understanding, entity-centric tasks.
Motivation: Incorporate entity and phrase knowledge into pre-training.
Applications: Information extraction, entity linking, knowledge-aware NLP.
---
## Core Concepts & Theory
### Knowledge Masking
Mask entities and phrases instead of random tokens.
### Entity Awareness
Incorporate entity knowledge during pre-training.
### Knowledge Graphs
Leverage structured knowledge for representation learning.
### Enhanced Semantics
Richer semantic understanding through knowledge integration.
---
## Mathematical Formulation
Knowledge Masking Loss:
$$\mathcal{L}_{ ext{KM}} = -\sum_p \log p(w_p | ext{context}, ext{knowledge})$$
Entity Integration:
$$h_{ ext{entity}} = ext{concat}([h_{ ext{token}}, e_{ ext{knowledge}}])$$
Knowledge Score:
$$s = ext{softmax}(W[ ext{entity}, ext{context}])$$
---
## Advanced Theory & Extensions
### Multi-Granularity Masking
Entity and phrase levels.
### Knowledge Graph Integration
Structured entity relations.
### Cross-Domain Adaptation
Domain-specific knowledge.
---
## Computational Considerations
Knowledge retrieval: O(N).
Entity encoding: O(E·D).
Joint embedding: O(T·D).
---
## Practical Implementation Strategies
### Entity Vocabulary
Pre-compiled entity lists.
### Phrase Recognition
Noun phrase extraction.
### Knowledge Integration
Embedding concatenation.
---
## Benchmark Datasets & Evaluation
FewRel: Relation extraction.
DocRED: Document-level relations.
TACL Benchmark: Entity understanding.
---
## Key Challenges & Limitations
### Entity Ambiguity
Multiple meanings per entity.
### Knowledge Freshness
Outdated knowledge graphs.
### Computational Overhead
Additional knowledge retrieval.
---
## Hyperparameter Tuning
Masking probability: 0.1-0.3.
Knowledge embedding dim: 128-512.
Integration weight: 0.1-1.0.
---
## Real-World Applications & Case Studies
Entity Linking: Disambiguate mentions.
Relation Extraction: Identify entity relations.
Question Answering: Entity-aware QA.
---
## Integration with Other Methods
ERNIE + knowledge graphs; + entity embeddings for enhanced reasoning.
---
## Summary & Key Takeaways
ERNIE enhances pre-training through entity and phrase masking.
Principles:
1. Knowledge masking: Entity-aware token masking.
2. Entity integration: Structured knowledge incorporation.
3. Multi-granularity: Hierarchical masking levels.
4. Knowledge graphs: Relation-aware learning.
5. Semantic enhancement: Improved understanding.
---
## Appendix: Practical Labs
### Lab 1: Entity Masking
import numpy as np
def entity_mask_tokens(tokens, entities, mask_prob=0.15):
"""Mask entities and phrases"""
masked = tokens.copy()
for start, end, label in entities:
if np.random.random() < mask_prob:
masked[start:end] = '[MASK]'
return masked
tokens = ['Apple', 'Inc', 'is', 'in', 'California']
entities = [(0, 2, 'ORG'), (4, 5, 'LOC')]
masked = entity_mask_tokens(tokens, entities)
assert masked[0] == '[MASK]' or masked[0] == 'Apple'
print("✓ Entity masking working")### Lab 2: Knowledge Embedding Integration
import numpy as np
def integrate_knowledge(token_emb, entity_emb, alpha=0.5):
"""Combine token and entity embeddings"""
combined = alpha * token_emb + (1 - alpha) * entity_emb
return combined
np.random.seed(42)
token_e = np.random.randn(768)
entity_e = np.random.randn(768)
combined = integrate_knowledge(token_e, entity_e)
assert combined.shape == (768,), "Correct shape"
print("✓ Knowledge integration working")### Lab 3: Entity Scoring
import numpy as np
def score_entities(context_emb, entity_embs):
"""Score entity relevance to context"""
scores = context_emb @ entity_embs.T
probs = np.exp(scores) / np.sum(np.exp(scores))
return probs
np.random.seed(42)
context = np.random.randn(768)
entities = np.random.randn(100, 768)
scores = score_entities(context, entities)
assert np.isclose(scores.sum(), 1.0), "Valid probabilities"
print("✓ Entity scoring working")### Lab 4: Phrase Recognition
def identify_phrases(tokens, pos_tags):
"""Identify noun phrases for masking"""
phrases = []
i = 0
while i < len(tokens):
if pos_tags[i] in ['NN', 'NNP']:
start = i
while i < len(tokens) and pos_tags[i] in ['NN', 'NNP', 'NNS']:
i += 1
phrases.append((start, i))
else:
i += 1
return phrases
tokens = ['New', 'York', 'City', 'is', 'beautiful']
pos = ['NNP', 'NNP', 'NNP', 'VBZ', 'JJ']
phrases = identify_phrases(tokens, pos)
assert phrases[0] == (0, 3), "Correct phrase detection"
print("✓ Phrase recognition working")---