
Bayesiska nätverk
Ett bayesiskt nätverk (BN) är en probabilistisk grafmodell som representerar variabler och deras villkorliga beroenden via en riktad acyklisk graf (DAG). Bayesi...
BMXNet för in binära neurala nätverk i MXNet, vilket dramatiskt förbättrar minnes- och beräkningseffektivitet för AI på resursbegränsade enheter.
BMXNet är en öppen källkodsimplementation av binära neurala nätverk (BNN:er) baserad på Apache MXNet-ramverket för djupinlärning. Det tillhandahåller verktyg och lager som gör det möjligt för utvecklare och forskare att bygga, träna och distribuera neurala nätverk med binära vikter och aktiveringar. Genom att utnyttja binär aritmetik istället för vanliga flyttalsberäkningar minskar BMXNet drastiskt minnesanvändningen och beräkningskomplexiteten, vilket gör det möjligt att distribuera djupinlärningsmodeller på strömsnåla och resursbegränsade enheter.
Innan vi går in på detaljer om BMXNet är det viktigt att förstå vad binära neurala nätverk är och varför de är betydelsefulla inom artificiell intelligens (AI).
Binära neurala nätverk är en typ av neurala nätverk där vikterna och aktiveringarna begränsas till binära värden, vanligtvis {+1, -1}
eller {1, 0}
. Denna binarisering förenklar beräkningarna i neurala nätverk genom att reducera komplex aritmetik till enkla bitvisa operationer som XNOR och biträkning (popcount).
BNN:er är särskilt användbara i scenarier där beräkningsresurserna är begränsade men realtidsbearbetning krävs. Detta inkluderar applikationer som:
BMXNet står för Binary MXNet, vilket indikerar dess integration med MXNet-ramverket för djupinlärning. MXNet är känt för sin skalbarhet, portabilitet och stöd för flera programmeringsspråk.
I BMXNet uppnås binarisering av vikter och aktiveringar med hjälp av sign-funktionen. Under framåtpasseringen omvandlas realvärdesvikter och aktiveringar till binära värden. Under bakåtpasseringen beräknas gradienter med avseende på realvärdesvariabler för att möjliggöra träning.
Binariseringsformel:
För ett realvärdesinmatning (x):
b = sign(x) = { +1, om x ≥ 0; -1, annars }
BMXNet introducerar flera binära lager:
Dessa lager fungerar likt sina motsvarigheter i MXNet men opererar med binära beräkningar.
Den centrala beräkningseffektiviteten i BMXNet kommer från att ersätta traditionella aritmetiska operationer med bitvisa operationer:
Genom att utnyttja dessa operationer kan BMXNet utföra konvolutions- och fullt anslutna lagerberäkningar mycket snabbare än med flyttalsaritmetik.
Ett av de främsta användningsområdena för BMXNet är att distribuera djupinlärningsmodeller på enheter med begränsade resurser. Till exempel:
Inom området AI-automation och chattbottar möjliggör BMXNet distribution av neurala nätverk som kan:
Med BMXNet har utvecklare skapat bildklassificeringsmodeller som körs effektivt på Android- och iOS-enheter. Genom att konvertera standardmodeller som ResNet-18 till binära versioner kan man uppnå:
I IoT-miljöer kan BMXNet användas för att distribuera chattbottar som:
Robotar och automatiserade system kan använda BMXNet för uppgifter som:
För att börja använda BMXNet kan du ladda ner biblioteket och förtränade modeller från det officiella GitHub-förrådet:
https://github.com/hpi-xnor
BMXNet stödjer träning av binära modeller:
Utvecklare kan konvertera befintliga MXNet-modeller till binära versioner:
Nedan följer ett förenklat exempel på hur man definierar ett binärt neuralt nätverk med BMXNets lager:
import mxnet as mx
import bmxnet as bmx
def get_binary_network():
data = mx.sym.Variable('data')
# Första lagret (ej binariserat)
conv1 = mx.sym.Convolution(data=data, kernel=(3,3), num_filter=64)
act1 = mx.sym.Activation(data=conv1, act_type='relu')
# Binära lager
bin_act = bmx.sym.QActivation(data=act1, act_bit=1)
bin_conv = bmx.sym.QConvolution(data=bin_act, kernel=(3,3), num_filter=128, act_bit=1)
bn = mx.sym.BatchNorm(data=bin_conv)
pool = mx.sym.Pooling(data=bn, pool_type='max', kernel=(2,2), stride=(2,2))
# Utgångslager (ej binariserat)
flatten = mx.sym.Flatten(data=pool)
fc = mx.sym.FullyConnected(data=flatten, num_hidden=10)
output = mx.sym.SoftmaxOutput(data=fc, name='softmax')
return output
Chattbottar är beroende av modeller för naturlig språkbehandling, vilka ofta är resurskrävande. Med hjälp av BMXNet kan man:
Vid AI-automation är svarstid och effektivitet avgörande.
BMXNet är ett värdefullt verktyg för utvecklare som vill distribuera djupinlärningsmodeller i miljöer med begränsade resurser. Genom att använda binära neurala nätverk öppnar det upp möjligheter för effektiv AI inom olika områden, inklusive AI-automation och chattbottar. Dess integration med MXNet samt stöd för både GPU- och CPU-beräkningar gör det tillgängligt och anpassningsbart för olika projektbehov.
Oavsett om du utvecklar en mobilapplikation som kräver realtidsigenkänning av bilder eller distribuerar chattbottar som måste fungera effektivt på strömsnål hårdvara, tillhandahåller BMXNet de komponenter som behövs för att bygga och distribuera binära neurala nätverk effektivt.
BMXNet är ett betydelsefullt framsteg inom binära neurala nätverk (BNN:er), som är utformade för att förbättra beräkningseffektivitet och minska energiförbrukning, särskilt användbart för att distribuera djupinlärningsmodeller på strömsnåla enheter. Nedan följer en sammanfattning av relevanta vetenskapliga artiklar som diskuterar BMXNet och dess applikationer:
BMXNet: An Open-Source Binary Neural Network Implementation Based on MXNet
Denna artikel, skriven av Haojin Yang och kollegor, introducerar BMXNet, ett öppet bibliotek för binära neurala nätverk (BNN:er) baserat på MXNet. BNN:er i BMXNet använder bitvisa operationer, vilket drastiskt minskar minnesanvändningen och ökar effektiviteten, särskilt för strömsnåla enheter. Biblioteket stödjer både XNOR-nätverk och kvantiserade neurala nätverk och möjliggör sömlös integration med standardkomponenter i biblioteket över GPU- och CPU-lägen. BMXNet-projektet, underhållet av Hasso Plattner-institutet, inkluderar exempelprojekt och förtränade binära modeller, tillgängliga på GitHub: BMXNet Library.
Learning to Train a Binary Neural Network
I detta arbete utforskar Joseph Bethge och kollegor metoder för att effektivt träna binära neurala nätverk med BMXNet. De fokuserar på att avmystifiera träningsprocessen och göra den mer tillgänglig. Artikeln diskuterar olika nätverksarkitekturer och hyperparametrar för att förbättra förståelsen och förbättra träningsresultaten för BNN:er. Forskningen introducerar strategier för att förbättra noggrannheten genom att öka nätverkskopplingarna. Koden och modellerna finns offentligt tillgängliga för vidare utforskning.
Training Competitive Binary Neural Networks from Scratch
Denna studie av Joseph Bethge med flera betonar att förbättra prestandan hos binära nätverk utan att vara beroende av modeller med full precision eller komplexa strategier. Författarna uppnår framgångsrikt toppresultat på benchmark-datamängder och visar att enkla träningsmetoder kan ge konkurrenskraftiga binära modeller. De är också pionjärer inom integrationen av täta nätverksarkitekturer i binära nätverk och för forskningen framåt.
daBNN: A Super Fast Inference Framework for Binary Neural Networks on ARM devices
Jianhao Zhang och hans team presenterar daBNN, ett ramverk som stödjer snabb implementering av BNN:er på ARM-enheter såsom mobiltelefoner. Artikeln visar daBNNs förmåga att förbättra inferenseffektiviteten med hjälp av bitvisa operationer och uppfyller potentialen för BNN:er på enheter med begränsade beräkningsresurser. Denna forskning bidrar till praktisk distribution av BNN:er på allestädes närvarande ARM-baserade enheter.
BMXNet är ett öppet bibliotek för att bygga och distribuera binära neurala nätverk (BNN:er) på Apache MXNet-ramverket. Det möjliggör neurala nätverk med binära vikter och aktiveringar, vilket drastiskt minskar minnesanvändning och beräkningskomplexitet, vilket gör det idealiskt för AI-applikationer på resursbegränsade och strömsnåla enheter.
BMXNet erbjuder minskat minnesutrymme, snabbare inferens och lägre energiförbrukning genom att utnyttja binära operationer istället för flyttalsaritmetik. Dess sömlösa integration med MXNet och stöd för både GPU:er och CPU:er gör det lämpligt för inbäddad AI, IoT, mobilt och realtids-AI-automation.
BMXNet är idealiskt för distribution av djupinlärningsmodeller på inbäddade enheter, IoT-hårdvara, mobiltelefoner, robotik och edge AI-scenarier där effektivitet, låg strömförbrukning och realtidsbearbetning är avgörande.
Till skillnad från vanliga neurala nätverk som använder flyttalsvikter och aktiveringar, binäriserar BNN:er dessa värden (till +1/-1 eller 1/0), vilket möjliggör användning av effektiva bitvisa operationer som XNOR och popcount. Detta minskar avsevärt minnes- och beräkningskraven samtidigt som rimlig noggrannhet bibehålls för många uppgifter.
Du kan ladda ner BMXNet, komma åt dokumentation och hitta förtränade modeller i det officiella GitHub-förrådet: https://github.com/hpi-xnor. Forskningsartiklar och handledningar finns också tillgängliga för att hjälpa dig komma igång.
Upptäck hur BMXNet möjliggör snabb, energieffektiv AI-distribution på strömsnåla enheter med hjälp av binära neurala nätverk. Integrera, träna och distribuera kompakta neurala modeller för edge, IoT och mobila applikationer.
Ett bayesiskt nätverk (BN) är en probabilistisk grafmodell som representerar variabler och deras villkorliga beroenden via en riktad acyklisk graf (DAG). Bayesi...
Artificiella neurala nätverk (ANNs) är en undergrupp av maskininlärningsalgoritmer som är modellerade efter den mänskliga hjärnan. Dessa beräkningsmodeller best...
Ett neuralt nätverk, eller artificiellt neuralt nätverk (ANN), är en beräkningsmodell inspirerad av den mänskliga hjärnan, avgörande inom AI och maskininlärning...