היכולת לזהות אנומליות מתבקשת בעולם המבוסס נתונים של היום והיא רכיב מרכזי למגוון תעשיות כגון פיננסים, בריאות, סייברבזיקה וייצור. אנומליות יכולות להיות אות להונאה, כשלי מערכת, אירועי אבטחה או אירועים חשובים אחרים שדורשים תשומת לב מיידית. הנפח, המהירות והגיוון של הנתונים שמזרים קשים לטפל בהם לטכניקות קלאסיות של זיהוי אנומליות. מאידך, התפתחויות אחרונות במודלים שפה גדולים (LLMs) מספקות נתיב חדש לביצוע זיהוי אנומליות בזמן אמת. בפוסט בלוג זה, אנו דנים באופן בו ניתן להשתמש ב-LLMs לזיהוי אנומליות בנתונים בזמן אמת בפרטיות עם דוגמאות מסוימות.
זיהוי אנומליות
אנומליות הן רגילות בנתונים שלך שאינן עומדות בגישה מוגדרת טובה של התנהגות רגילה.
זיהוי אנומליות
זה בעצם מציאת הנקודה בנתונים שונה משאר הסוג שלה. זה עשוי לחשוף אירועים נדירים או מקרים קרובים לגבול שאינם תואמים לפרופיל הנתונים הכולל. האנומליות הללו יכולות להיות מוכלות בשלושה סוגים:
- אנומליות בטבלה: אלו אנומליות נקודתיות, בגדר תאים יחידים שדופקים כמו נקבה בטבלה.
- חריגים עם הקשר: נקודות נתונים שעשויות להיחשב כחריגות בהקשר מסוים.
- אנומליות במרחב: קבוצת נקודות נראות כאנומליות רק כאשר רואים אותן ביחד.
הבעיה עם זרימת מידע
זרימת מידעזה מונח שנמצא בשימוש כמון לתיעוד מידע שניצר בזמן אמת או באופן מתמשך. אלה בצורה של מידע סנסורים, עיסקאות פיננסים, ערוצי מדיה חברתית, ומסמכים רשת. האתגרים העיקריים בסיום הסקר של המערכות המוזרות בזרימת מידע הם באים בדוגמאות הבאות:
- מספיקות:יש לנו הרי מידע.
- מהירות:הזרימה המהירה של המידע דורשת גישה בזמן אמת לעיבוד הזרם.
- מגוון:המידע מגיע בהרבה צורות וסוגים.
- נכונות:בטחון הנכונות והאמין של המידע.
יש הרבה סיבות ששיטות הסקר המוזרות המסורתיות (כמו מבחנים סטטיסטיים ומודלים ללמידה מכונית) לרוב לא יכולים לטפל באתגרים האלה. זה המקום בו מודלים המונחים בשפה גדולים (כמו GPT-4 מOpenAI) מגיעים לבמה.
מודלים המונחים בשפה גדולה
מודלים לשפה (כמו GPT-4 מOpenAI, לדוגמה) הם מכונות ללמידה עמוקה שעברו את האימון עם סך גדול של טקסט. הם מסוגלים להבין ולייצר טקסט באותה דרך של בני אדם, ולכן הם מתקנים טובים למטלות רחבות בניתוח הטקסט הטבעי (NLP). מודלים המונחים בשפה גדולה מראים יכולות מדהימות במשימות כמו
LLMs ניתן להשתמש בהם בצורה הטובה ביותר על ידי שימוש בהם כדי לפענח הקשר ותבניות בנתונים. זה מהם מועמדים מושלמים לגילוי חריגויות מאחר ואלגוריתמים אלו יכולים לזהות אפילו סטיות קטנות ששיטות מסורתיות עשויות להתעלם מהן.
שימוש ב-LLMs לגילוי חריגויות
LLMs ניתן להשתמש בהם בכמה דרכים למטרת הטיפול בהם כמגלים של חריגויות לאירוע נכנס נתון ודחיקתו למערכת חיצונית כלשהי. הנה מספר שיטות:
- ניתוח קונטקסטואלי: LLMs מסייעים לזהות חריגויות על ידי למידת הקשר סביב נקודות נתונים ספציפיות. בהקשר של זרם עסקי של עסקאות פיננסיות, LLM יכול לזהות הרגלי הוצאה לא סטנדרטיים.
- זיהוי תבניות: LLMs זוהים תבניות מורכבות וכוללות בנתונים. LLM יכול לזהות תבניות תעבורה לא רגילות שעשויות לסמן פריצת אבטחה באבטחת הרשת.
- נתונים מסומנים: המטרה העיקרית של עצי דגם לוגיסטי היא לחזות אחת משני תוצאות דיסקרטיות, שנבחנות לעיתים קרובות בדרך מודרכת שיכולה לדרוש נתונים מסומנים.
- למידת לא מודרת: LLMs יכולים גם לשמש לא מודרת לגילוי חריגויות ללא נתונים מסומנים. זה מיוחד במיוחד ביישומים שכוללים חריגויות נדירות ו/או נתונים מסומנים חסרים.
- עיבוד יעיל בזמן: מאחר ו-LLMs יכולים לעבד נתונים בזמן אמת, הם מתאימים ליישומי נתונים בזמן אמת. הם יכולים לעשות זאת בצורה דינמית ובאופן רציף במהלך מעקב אחר הנתונים כשהם זורמים.
דוגמאות מעשיות
לפני כן, בואו נסתכל על כמה דוגמאות בסיסיות של כיצד אנחנו יכולים להשתמש בLLMs בזמן אמת עבור גילוי חריגים בתחומים שונים.
מקרה שימוש 1: גילוי של הונאת כספים
מוסדות פיננסיים מעבדים כמויות עצומות של נתוני עסקאות עם מספר גדול מאוד של עסקאות התרחשותיות יומיומיות (בצורות שונות, כמו בזמן אמת ולא בזמן אמת). מנקודת מבט פיננסית, זיהוי הונאה חיוני למינימום ההפסדים ולשמירה על ביטחון הלקוח. חוץ מזאת, מערכות מבוססות כללים מסורתיות לעיתים תכיר לא את דפוסי ההונאה המורכבים יותר.
LLM מקל על עיבוד בזמן אמת של נתון העסקה. בהתבסס על סכום העסקה, מיקום הגיאוגרפי והזמן, גורמים אלה יכולים גם להיחשב על התנהגות רכישה היסטורית. לדוגמה, אם כרטיס האשראי של לקוח משמש לביצוע רכישה יקרה במדינה אחרת פתאום, התנהגות זו תהיה לא רגילה בהתבסס על ההיסטוריה של הוצאות בעבר ועשויה להפעיל פלט חריגות על ידי הLLM.
מקרה שימוש 2: מוניטור בריאות
מעקב רציף וזיהוי מוקדם של מצבי רפואיים משמעותי ברפואה. מכשירים אלה אוספים זרם נתונים רציף – קצב לב, רמות לחץ דם ודפוסי פעילות.
LLM ניתן לשימוש כדי לבצע ניתוח בזמן אמת של הנתונים הללו. לדוגמה, אם קצב לבו של חולה עולה באופן לא טיפולי מסיבה לא ידועה, אנו יכולים לסמן את החריגות הללו. הLLM יכול גם לקחת בחשבון מידע קונטקסטואלי שונה, כמו היסטוריית החולה והפעילות בזמן נתון, לגילוי חריגויות טוב יותר.
מקרה שימוש 3: בטיחות רשת
אבטחת רשת דורשת מעקב פעיל והבנה של תנועת רשת רגילה. חריגויות בתנועת הרשת עשויות לגרום לבעיות כמו נגיף, פריצת נתונים, או התקפות שירות דחויות.
ניתן להשתמש ב-LLM כדי לבדוק קבצי יומן של רשת עבור הסטות מהתבניות הרגילות, שעשויות לאזהר על סיכון אבטחה. לדוגמה, אם יש עלייה פתאומית בתעבורה אל שרת מסוים או דפוס בלתי רגיל של העברת נתונים, ה-LLM יכול לזהות אלה כאפשריות לחריגויות. המודל יכול אף לקחת בחשבון דפוסי תנועת הרשת ההיסטוריים וחתימות התקפה ידועות על מנת לשפר עוד יותר את דיוק הזיהוי.
איך ליישם זיהוי חריגויות באמצעות LLMs
איסוף נתונים
לאסוף את הנתונים ממקורות הזרמים. זה יכול להיות יומנים של עסקאות, נתוני חיישנים, או קישוריות רשת.
ניקוי נתונים
ניקוי הנתונים הוא שלב חיוני כדי שהם יתאימו לניתוח שלנו על ידי עיבוד מוקדם. זה עשוי לכלול הסרת רעש, טיפול בערכים חסרים, ונורמליזציה של הנתונים.
אימון המודל
לאמן את ה-LLM עם נתוני היסטוריה כדי להקים בסיסות. שלב זה עשוי לכלול אימון נוסף של LLM מאומן על נתוני התחום.
הטמעה לניתוח בזמן אמת
להשתמש במודל המאומן לנתח נתוני הזרמה. המודל צריך לצפות בזרמי הנתונים ולהפעיל אזהרה אם הוא מוצא חריגויות.
התראה ופעולה
ליצור מערכת התראה כדי להזהיר את הרשות הרלוונטית אם נמצאו חריגויות. לציין את המשימות שיש לבצע על סמך סוגים מסוימים של חריגויות.
הגדרת הסביבה
להתחלה, יש להתקין את הספריות הנדרשות.
pip install transformers torch
דוגמה לדגימה 1: זיהוי הונאה פיננסית
נניח שרוצים לנסח את השיטה LLM לזיהוי חריגים בעסקאות פיננסיות.
שלב 1: סימולציית נתונים
נשלח זרם של עסקאות פיננסיות.
import random
import time
def generate_transaction():
transactions = [
{"user_id": 1, "amount": random.uniform(1, 100), "location": "New York"},
{"user_id": 2, "amount": random.uniform(1, 1000), "location": "San Francisco"},
{"user_id": 3, "amount": random.uniform(1, 500), "location": "Los Angeles"},
{"user_id": 4, "amount": random.uniform(1, 2000), "location": "Chicago"},
]
return random.choice(transactions)
def stream_transactions():
while True:
transaction = generate_transaction()
yield transaction
time.sleep(1) # Simulating real-time data stream
# שימוש דוגמתי
for transaction in stream_transactions():
print(transaction)
שלב 2: זיהוי חריגים מבוסס LLM
נשתמש ב-LLM שכבר הוכשר לכך באמצעות Hugging Face.
from transformers import pipeline
# טען מודל ניתן לאבחון רגשי כדוגמה
# בסצנריו אמיתי, יש ליישם דירוג מחדש על מודל למשימת זיהוי חריגים ספציפית
model = pipeline("sentiment-analysis")
def detect_anomaly(transaction):
# המרה של העסקה לפורמט מחרוזת עבור ה-LLM
transaction_str = f"User {transaction['user_id']} made a transaction of ${transaction['amount']} in {transaction['location']}."
# השתמש ב-LLM לנתח את העסקה
result = model(transaction_str)
# לצורך פשטות, שקול רגש שלילי כחריג
if result[0]['label'] == 'NEGATIVE':
return True
return False
# שימוש דוגמתי
for transaction in stream_transactions():
if detect_anomaly(transaction):
print(f"Anomaly detected: {transaction}")
else:
print(f"Normal transaction: {transaction}")
דוגמה 2: מעקב בריאות
נשתמש בשיטת ה-LLM לבניית מודלים לזיהוי חריגים בזרם של נתוני בריאות של חולים.
שלב 1: סימולציית נתונים
def generate_health_data():
health_data = [
{"patient_id": 1, "heart_rate": random.randint(60, 100), "blood_pressure": random.randint(110, 140)},
{"patient_id": 2, "heart_rate": random.randint(60, 120), "blood_pressure": random.randint(100, 150)},
{"patient_id": 3, "heart_rate": random.randint(50, 110), "blood_pressure": random.randint(90, 130)},
{"patient_id": 4, "heart_rate": random.randint(70, 130), "blood_pressure": random.randint(100, 160)},
]
return random.choice(health_data)
def stream_health_data():
while True:
data = generate_health_data()
yield data
time.sleep(1) # Simulating real-time data stream
# שימוש דוגמתי
for data in stream_health_data():
print(data)
שלב 2: זיהוי חריגים מבוסס LLM
def detect_health_anomaly(data):
# המרת נתוני הבריאות לפורמט מחרוזת עבור ה-LLM
health_data_str = f"Patient {data['patient_id']} has a heart rate of {data['heart_rate']} and blood pressure of {data['blood_pressure']}."
# השתמש ב-LLM לנתח את נתוני הבריאות
result = model(health_data_str)
# לצורך פשטות, שקול רגש שלילי כחריג
if result[0]['label'] == 'NEGATIVE':
return True
return False
# שימוש דוגמתי
for data in stream_health_data():
if detect_health_anomaly(data):
print(f"Anomaly detected: {data}")
else:
print(f"Normal health data: {data}")
דוגמה 3: אבטחת רשתות
יצירת יומני רשת וזיהוי חריגים באמצעות LLM.
שלב 1: מדמה מידע
def generate_network_log():
network_logs = [
{"ip": "192.168.1.1", "request": "GET /index.html", "status": 200},
{"ip": "192.168.1.2", "request": "POST /login", "status": 401},
{"ip": "192.168.1.3", "request": "GET /admin", "status": 403},
{"ip": "192.168.1.4", "request": "GET /unknown", "status": 404},
]
return random.choice(network_logs)
def stream_network_logs():
while True:
log = generate_network_log()
yield log
time.sleep(1) # Simulating real-time data stream
# השתמשות מדומה
for log in stream_network_logs():
print(log)
שלב 2: חישוב על פי מודל השפה רחבה – אבחנת שגיאות
def detect_network_anomaly(log):
# ממהלך לשיטה טעם טעם לטעם מסוג של מודל השפה רחבה
log_str = f"IP {log['ip']} made a {log['request']} request with status {log['status']}."
# בעזרת המודל הזה, נוצרת תשומת לב לעבודה של המידע
result = model(log_str)
# בשביל פשטות, ניקח את הרגשות השליליים כשגיאות
if result[0]['label'] == 'NEGATIVE':
return True
return False
# השתמשות מדומה
for log in stream_network_logs():
if detect_network_anomaly(log):
print(f"Anomaly detected: {log}")
else:
print(f"Normal network log: {log}")
הדוגמאות מראות איך מודלי שפה רחבים (LLMs) יכולים להיות משמשים לאבחנת שגיאות בזרים באזורים שונים. המודל הזה משמש רק לטעם טעם בדוגמאות, אך תוכלו לעדכן אותו עבור המשימה שלך של אבחנת שגיאות.
שימוש בזמן אמת בLLMs
בעזרת ה-API הזרים הזה שלך תצפה במידע בזמן אמת ותשתמש בספירות גדולות, שמבוססות על דפוסים כדי להעריך הקשר (מדדים סטטיסטיים), אז אבחנת השגיאות בזמן אמת תאפשר את ההגיבורה המוקדמת לתהות על בעיות מעשיות.
אתגרים ודיעבדויות
מעבר ליתרונות של אבחנת השגיאות שהLLMs מציעים, צריך להיות מודע לאתגרים ומגבלותיהם.
- משאבים: LLMs דורשים משאבים משמעותיים כדי לעבד ולהתחיל בעיבוד בזמן אמת. חייבים לוודא שיש לך תשתית מספקת.
- פרטיות המידע: מידע פרטי כמו העסקאות פיננסיות ור
- ניתוח: LLMs לעתים קרויים "תיבת שחור" בשל מורכבותם. לאמון והבנת סיבות הגילוי של החריגויות, ניתוח דגם ופירוט הסברים הם חשובים.
- למידה רציפה: מידע זורם אינו ניחאי, וטרנדים עשויים להשתנות לאורך זמן. דגמים צריכים להתעדכן ללמידה רציפה ולשיפור דיוק הגילוי.
כיוונים עתידיים
תחום גילוי חריגויות עם LLMs עדיין פותח, וכמה כיוונים הם חדשניים לחקר נוסף שאנו מוצאים מבטיחים למחקר ולחדשנות בעתיד:
- דגמים היברידיים: שילוב של סדרות זמן או אלגוריתמי אשכולות עם LLMs עשוי לחזק את גילוי החריגויות.
- חישוב קצה: כחלק מהרצת LLMs, ניתן להעביר אותם על התקני קצה; זה מאפשר גילוי בזמן אמת ברמת המקור ומביא לנמוכות פיגות זמן ותגובה.
- בינה מלאכותית הניתנת להסבר: פיתוח טכניקות לשפר את הניתוח של LLMs כך שצדקנים יכולים להבין ולהסכים על סיבת קבלת ההחלטות של הדגם.
- דגמים ספציפיים לתחום: הכוונה של LLMs לתחומים ספציפיים (פיננסי, בריאות או סייבר) עשויה לשפר את דיוק הגילוי והרלוונטיות.
סיכום
אבחנת התקלים היא שימוש נפוץ בתעשייות בנתונים זרמיים. אולם, מודלים השפה גדולים יכולים להיות דרך חזקה ומקיפה לטפל בבעיה הזו. בשימוש במודלים השפה הגדולים לניתוח הקשרים וזיהוי דפוסים ביחד עם עיבוד בזמן אמת יכול לעזור באופן יעיל לארגונים לזיהות תקלים בקצב גבוה. יש בעיות מסויימות שצריך להתייחס להם עד שנוכל להנצל באופן מלא את הכוח של מודלים השפה הגדולים באבחנת התקלים. אנחנו יכולים לדמיין שיש עוד שיפורים באפשרויות לאבחנת התקלים בזמן אמת בעקבות התקדמות הטכנולוגית בתחום זה.
Source:
https://dzone.com/articles/realtime-anomaly-detection-using-large-language