portaldacalheta.pt
  • Põhiline
  • Tulud Ja Kasv
  • Tehnoloogia
  • Planeerimine Ja Prognoosimine
  • Projekti Juht
Andmeteadus Ja Andmebaasid

Heliloogika ja monotoonilised tehisintellekti mudelid



Tehisintellekt on kiiresti muutumas hämmastavaks varaks, olles saavutanud üleinimliku jõudluse sellistes valdkondades nagu piltide tuvastamine, Go ja isegi pokker. Paljud on tehisintellekti ja inimkonna tulevikust põnevil. Samal ajal on üldine arusaam, et tehisintellekt kannatab ühe tüütu vea käes: tehisintellekt võib praeguses olekus olla ettearvamatult ebausaldusväärne.

Klassikaline näide on Jeopardia! IBM väljakutse , mille käigus IBMi tehisintellekt Watson puhastas plaati hõlpsalt, et ainult 'Final Jeopardy!' vahele jätta. küsimus, mis kuulus kategooriasse USA linnad : „Selle suurim lennujaam on nimetatud Teise maailmasõja kangelase nimeks; selle suuruselt teine ​​maailmasõja lahingus. ' Watson vastas , 'Mis on Toronto ?????' - täiendavad küsimärgid (ja madal panus) viidates selle kahtlusele .



Ehkki tehisintellektil on võime muinasjutuliseks esituseks pikka aega - kuid, aastaid, aastakümneid isegi - alati on selline näriv võimalus, et äkki see müstiliselt pettub.



Kõige rohkem puudutab meid inimesi see, et tehisintellekt teeks vea, vaid see, kui viga 'ebaloogiline' on. Watsoni puhul üritaks keegi, kes küsimusele vastust ei tea, 'loogiliselt' vähemalt ära arvata USA suurlinna. Ma usun, et see on üks peamisi põhjuseid, miks meil pole veel isejuhtivate autode avalikku kasutuselevõttu: Isegi kui isejuhtivad autod võivad olla statistiliselt ohutumad, kardame, et nende aluseks olev tehisintellekt võib ootamatult eksida Watsoniga sarnases mõttes , kuid palju tõsisemate tagajärgedega.



See pani mind mõtlema, kas õige tehisintellekti mudel saaks selle probleemi lahendada? Kas õigel tehisintellektil oleks võime kriitilistel hetkedel teha usaldusväärseid otsuseid, isegi kui tal pole kõiki vastuseid? Selline tehisintellekt suudaks muuta tehnoloogia kulgu ja võimaldada meil tehisintellekti muinasjutulisi eeliseid ...

Usun, et vastus neile küsimustele on jaatav. Usun, et selliseid vigu nagu Watson võivad olla välditavad, kasutades täiustatud, loogilisemalt piiratud mudeleid, mille varajast prototüüpi nimetatakse monotoonsed masinõppe mudelid . Korraliku monotoonilise tehisintellekti mudeli abil veel üksikasjadesse laskumata:



  • Isesõitev auto oleks ohutum, sest isegi kõige väiksema hulga inimsignaali tuvastamisest piisab ohutusprotokolli aktiveerimiseks isegi suure hulga muu signaali olemasolul.
  • Masinõppe (ML) süsteemid oleksid võistlusrünnakute ja ootamatute olukordade jaoks tugevamad.
  • ML tulemuslikkus oleks loogilisem ja inimlikult arusaadav.

Usun, et liigume tehisintellekti arvutusliku ja algoritmilise jõu suure kasvu ajastust tehisintellekti peenuse, efektiivsuse ja mõistmise ajastusse ning monotoonsed masinõppemudelid on selle põneva teekonna esimene samm. Monotoonilised mudelid muudavad tehisintellekti 'loogilisemaks'.

Toimetuse märkus: lugejatel, kes soovivad teha oma esimese sammu ML-i põhitõdesid mõistma, soovitatakse lugeda meie sissejuhatav artikkel ML-i kohta .



Monotooniliste tehisintellektide mudelite teooria

Mis on monotoonne mudel? Vabalt öeldes a monotoonne mudel on ML-mudel, millel on teatud funktsioonide komplekt ( monotoonsed tunnused ), mille kasv viib mudeli alati oma väljundi suurendamiseni.

Tehniliselt ...

... on kaks kohta, kus ülaltoodud määratlus on ebatäpne.



Esiteks on funktsioonid siin monotoonsed suureneb . Samuti võivad meil olla monotoonselt kahanevad tunnused, mille suurenemine viib alati mudeli vähenemiseni. Neid kahte saab teisendada lihtsalt eitamise teel (korrutades -1-ga).

Teiseks, kui me ütleme, et väljund suureneb, ei tähenda me seda, et see on rangelt suureneb - me mõtleme seda ei vähene , sest väljund võib jääda samaks.



Tegelikus elus on paljudel muutujate paaridel monotoonsed seosed. Näiteks:

  • Reisi gaasihind suureneb läbitud vahemaal monotoonselt.
  • Parema krediidi korral on laenu saamise tõenäosus suurem.
  • Eeldatav sõiduaeg pikeneb koos liikluse suurusega.
  • Tulu suureneb koos reklaami klõpsamissagedusega.

Kuigi need loogilised seosed on piisavalt selged, ei pruugi ML-mudeli jaoks, mis interpoleerib piiratud andmeid ja domeeniteadmisi, neid siiski mitte. Tegelikult võib mudel neid valesti interpoleerida, mille tulemuseks on naeruväärsed ja vaimukad ennustused. Masinõpe mudeleid, mis tegema selliste teadmiste püüdmine toimib praktikas paremini (vältides ülereageerimist), neid on lihtsam siluda ja need on paremini tõlgendatavad. Enamasti tuleks monotoonilist mudelit kasutada koos tavalise mudeliga, õppijate ansambli osana.



Üks koht, kus monotoonilised tehisintellekti mudelid tõeliselt säravad, on võistluslikus jõulisuses. Monotoonilised mudelid on “karastatud” masinõppemudelid, mis tähendab, et nad on võistlevate rünnakute suhtes vastupidavad. Ründajad, kes on võimelised manipuleerima ainult mitte-monotooniliste tunnustega, ei suuda monotoonse tehisintellekti mudelist kõrvale hiilida, kuna nad ei suuda näite silti monotoonilise tehisintellekti mudeli suhtes muuta.

Kasutage monotooniliste tehisintellektide mudelite juhtumeid

Siiani on see arutelu olnud täiesti teoreetiline. Arutleme mõnel reaalsel kasutamisel.

asjade internet kodutehnika

Kasutage juhtumit nr 1: pahavara tuvastamine

Üks monotoonse tehisintellekti mudelite lahedamaid kasutusjuhtumeid peab olema nende kasutamine pahavara tuvastamisel. Rakendatud osana Windows Defenderist, on igas ajakohases Windowsi seadmes monotoonne mudel, mis kaitseb kasutajaid vaikselt pahavara eest.

kuidas esitlust kujundada

Ühe stsenaariumi järgi kehastasid pahavara autorid seaduslikke, registreeritud ettevõtteid sertifikaadiasutuste petmiseks, allkirjastades oma pahavara edukalt digitaalselt usaldusväärsete sertifikaatidega. Naiivne pahavara klassifikaator kasutab tõenäoliselt funktsioonina koodiallkirjastamist ja näitab, et sellised näidised on healoomulised.

Kuid mitte nii Windows Defenderi monotoonilise tehisintellekti mudeli puhul, mille monotoonsed omadused on ainult pahavarale viitavad funktsioonid. Ükskõik kui palju „healoomulist“ sisu pahavara autorid oma pahavarasse süstivad, jätkaks Windows Defenderi monotoonne tehisintellekti mudel valimi kogumist ja kasutajate kaitsmist kahjustuste eest.

Minu kursusel Masinõpe punase meeskonna häkkeritele Õpetan mitut tehnikat ML-põhiste pahavara klassifikaatoritest kõrvalehoidmiseks. Üks tehnikatest koosneb pahatahtliku proovi „healoomulise“ sisu / funktsioonide täitmisest naiivsete ML-mudelite vältimiseks. Monotoonilised mudelid on selle rünnaku suhtes vastupidavad ja sunnivad pahatahtlikke tegijaid palju rohkem pingutama, kui neil on lootust klassifikaatorist kõrvale hiilida.

Kasutage juhtumit nr 2: sisu filtreerimine

Oletame, et meeskond ehitab kooliraamatukogude jaoks veebis surfamise sisufiltrit. Monotoonne tehisintellekti mudel on siinkohal suurepärane kandidaat, sest sobimatut sisu sisaldav foorum võib sisaldada ka palju vastuvõetavat sisu.

Naiivne klassifikaator võib kaaluda “sobivate” tunnuste olemasolu sobimatute tunnuste olemasoluga. Kuid seda ei tehta, sest me ei taha, et meie lapsed pääseksid ebasobivale sisule juurde, isegi kui see moodustab sisust vaid väikese osa.

Kasutage juhtumit nr 3: isejuhtiv auto tehisintellekt

Kujutage ette isejuhtiva auto algoritmi ehitamist. See vaatab pilti ja näeb rohelist tuld. See näeb ka jalakäijat. Kas see peaks kaaluma üksteise signaali? Absoluutselt mitte. Jalakäija olemasolu on piisav, et teha otsus auto peatamise kohta. Jalakäijate kohalolekut tuleks vaadelda kui monotoonset omadust ja selles stsenaariumis tuleks kasutada monotoonilist tehisintellekti mudelit.

Kasutage juhtumit nr 4: soovitusmootorid

Soovitusmootorid on monotooniliste tehisintellekti mudelite jaoks suurepärane kasutusvõimalus. Üldiselt võib neil olla iga toote kohta palju sisendeid: tärnide hinne, hind, arvustuste arv jne. Kui kõik muud sisendid on võrdsed, näiteks tähehinnangud ja hind, eelistaksime toodet, millel on rohkem arvustusi. Sellist loogikat saame jõustada monotoonse tehisintellekti mudeli abil.

Kasutage juhtumit nr 5: rämpsposti ja andmepüügi filtreerimine

See kasutusjuht sarnaneb pahavara tuvastamise kasutamise juhtumiga. Pahatahtlikud kasutajad võivad rämpspostifiltrite petmiseks süstida oma rämpsposti või andmepüügi e-kirju healoomuliste ilmingutega. Monotooniline tehisintellekti mudel on selle suhtes immuunne.

Rakendamine ja tutvustamine

Kui tegemist on monotooniliste tehisintellekti mudelite vabalt kättesaadavate rakendustega, eristuvad kõige paremini toetatud kolm: XGBoost, LightGBM ja TensorFlow Lattice.

Monotooniline ML XGBoosti õpetus

XGBoost peetakse üheks kõige paremini toimivaks algoritmid struktureeritud andmete põhjal, mis põhineb aastatepikkustel empiirilistel uuringutel ja konkurentsil. Lisaks on XGBoostis rakendatud monotoonsust.

Järgmisel monotooniliste ML-mudelite kasutamise XGBoost-õpetusel on kaasnev Pythoni repo .

Alustage mõne teegi importimisega:

import random import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.metrics import confusion_matrix import seaborn as sns sns.set(font_scale=1.4)

Stsenaarium, mida modelleerime, on sisu filtreerimine või pahavara andmebaas. Meil on mõned benign_features, mis modelleerivad näiteks sisu, mis on seotud „teaduse”, „ajaloo” ja „spordiga” või pahavara puhul „koodiga allkirjastamise” ja „tunnustatud autoritega”. ”

Samuti on meil olemas malicious_features, mis modelleerib näiteks „vägivalla” ja „uimastitega” seotud sisu hulka või pahavara puhul „krüptoteekidesse helistamiste arvu” ja „ arvuline mõõde tuntud pahavara perekonnaga. '

Modelleerime olukorda generatiivse mudeli abil. Genereerime juhuslikult suure hulga andmepunkte, umbes pooled healoomulised ja pooleldi pahatahtlikud, kasutades funktsiooni:

def flip(): '''Simulates a coin flip.''' return 1 if random.random() <0.5 else 0

Iga andmepunkt genereerib juhuslikult oma funktsioonid. „Healoomulisel” andmepunktil on healoomuliste funktsioonide suhtes suurem eelarvamus, „pahatahtlikul” andmepunktil aga suurem pahatahtlike funktsioonide kallutatus.

Kasutame kolmnurkset jaotust, näiteks:

bins = [0.1 * i for i in range(12)] plt.hist([random.triangular(0, 1, 1) for i in range(50000)], bins)

Treppi meenutav andmepunkti jaotuse graafik. Enamikul ämbritest, vahemikus 0,1 kuni 0,2, 0,2 kuni 0,3 ja nii edasi, on umbes 1000 andmepunkti rohkem kui vasakul. Esimesel, 0–0,1, paistab olevat umbes 500.

Kasutame ülaltoodud loogika tabamiseks seda funktsiooni:

def generate(): '''Samples from the triangular distribution.''' return random.triangular(0, 1, 1)

Seejärel jätkame oma andmekogumi loomist:

m = 100000 benign_features = 5 malicious_features = 5 n = benign_features + malicious_features benign = 0 malicious = 1 X = np.zeros((m, n)) y = np.zeros((m)) for i in range(m): vec = np.zeros((n)) y[i] = flip() if y[i] == benign: for j in range(benign_features): vec[j] = generate() for j in range(malicious_features): vec[j + benign_features] = 1 - generate() else: for j in range(benign_features): vec[j] = 1 - generate() for j in range(malicious_features): vec[j + benign_features] = generate() X[i, :] = vec

X sisaldab juhuslikult genereeritud tunnuste vektoreid, samas kui y sisaldab silte. See klassifitseerimisprobleem pole triviaalne.

Tüüpilised proovid: healoomuline vs pahatahtlik. Igal graafikul on näidatud 10 tunnust (0 kuni 9), mille väärtused on skaalal 0 kuni 1. Healoomulises graafikus on enamik funktsioone alla 0,5; tunnused 6 ja 7 on üle 0,6; funktsioon 2 on peaaegu 0,8; ja funktsioon 3 on peaaegu 1,0. Pahatahtlikus graafikus on kümnest funktsioonist 7 üle 0,5, sealhulgas funktsioonid 5, 6, 7 ja 8.

Näete, et healoomulistel proovidel on esimestel funktsioonidel tavaliselt suurem kaal, pahatahtlikel proovidel on viimastel funktsioonidel tavaliselt suurem kaal.

Kui andmed on valmis, teeme lihtsa koolituse-testimise jaotuse:

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Andmete ettevalmistamiseks meie XGBoosti õpetuse abil kasutame funktsiooni:

import xgboost as xgb def prepare_for_XGBoost(X, y): '''Converts a numpy X and y dataset into a DMatrix for XGBoost.''' return xgb.DMatrix(X, label=y) dtrain = prepare_for_XGBoost(X_train, y_train) dtest = prepare_for_XGBoost(X_test, y_test) dall = prepare_for_XGBoost(X, y)

Treenigem ja katsetagem nüüd andmete põhjal lihtsat (mitte monotoonilist) XGBoosti mudelit. Seejärel printime segiajamise maatriksi, et näha õigesti märgistatud positiivsete näidete, õigesti märgistatud negatiivsete näidete, valesti märgistatud positiivsete ja valesti märgistatud negatiivsete näidete arvulist jaotust.

params = {'n_jobs': -1, 'tree_method': 'hist'} model_no_constraints = xgb.train(params=params, dtrain=dtrain) CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dtrain, y_train ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's training confusion matrix') plt.show() print() CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dtest, y_test ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's testing confusion matrix') plt.show() model_no_constraints = xgb.train(params=params, dtrain=dall)

Piiramatu mudel

Tulemusi vaadates näeme, et olulist ülepakutamist pole. Võrdleme neid tulemusi monotooniliste mudelite tulemustega.

Selleks treenigem ja katsetagem monotoonilist XGBoost mudelit. Süntaks, milles me monotoonilistes piirangutes läbime, on järjestus ( f0 , füks , ..., fN ), kus kumbki fi on üks -1, 0 või 1, olenevalt sellest, kas soovime funktsiooni i olema vastavalt monotoonselt vähenev, piiranguteta või monotoonselt suurenev. Antud juhul täpsustame, et pahatahtlikud funktsioonid suurenevad monotoonselt.

params_constrained = params.copy() monotone_constraints = ( '(' + ','.join([str(0) for m in range(benign_features)]) + ',' + ','.join([str(1) for m in range(malicious_features)]) + ')' ) print('Monotone constraints enforced are:') print(monotone_constraints) params_constrained['monotone_constraints'] = monotone_constraints model_monotonic = xgb.train(params=params_constrained, dtrain=dtrain) CM = predict_with_XGBoost_and_return_confusion_matrix(model_monotonic, dtrain, y_train) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's training confusion matrix') plt.show() print() CM = predict_with_XGBoost_and_return_confusion_matrix(model_monotonic, dtest, y_test) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's testing confusion matrix') plt.show() model_monotonic = xgb.train(params=params_constrained, dtrain=dall)

Monotooniline tehisintellekti mudel

kuidas luua junit test intellij

On selge, et monotoonse mudeli jõudlus on sama mis piiranguteta mudeli omadustega.

Nüüd loome võistleva andmekogumi. Võtame kõik pahatahtlikud proovid ja 'topime' nende healoomulised tunnused, seades need kõik väärtusele 1. Seejärel näeme, kuidas need kaks mudelit kõrvuti toimivad.

X_adversarial = X[y == malicious] y_adversarial = len(X_adversarial) * [malicious] for i in range(len(X_adversarial)): vec = X_adversarial[i, :] for j in range(benign_features): vec[j] = 1 X_adversarial[i, :] = vec

Teisendame need vormiks, mille XGBoost soovitab:

dadv = prepare_for_XGBoost(X_adversarial, y_adversarial)

XGBoosti õpetuse viimaseks etapiks katsetame kahte masinõppemudeli tüüpi:

CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dadv, y_adversarial ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's confusion matrix on adversarial dataset') plt.show() CM = predict_with_XGBoost_and_return_confusion_matrix( model_monotonic, dadv, y_adversarial ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's confusion matrix on adversarial dataset') plt.show()

Piiranguteta vs monotoonsed tehisintellekti mudelid

Nagu näete, oli monotooniline tehisintellekti mudel umbes 2500 korda tugevam võistluslikud rünnakud .

LightGBM

Süntaks monotooniliste funktsioonide kasutamiseks LightGBM-is on sarnane .

TensorFlow võre

TensorFlow Lattice on veel üks raamistik monotoonsuse piirangute vastu võitlemiseks ja see on nii eelnevalt ehitatud TensorFlow Estimatorite kui ka TensorFlow operaatorite kogum, et luua oma võre mudeleid. Võred on mitmemõõtmelised interpoleeritud otsingu tabelid, mis tähendab, et need on ruumis ühtlaselt jaotatud punktid (nagu ruudustik) koos funktsioonipunktide väärtustega nendes punktides. Vastavalt Google AI ajaveeb :

„... otsitabeli väärtused on koolitatud, et minimeerida treeningnäidete kaotust, kuid lisaks sellele on otsingutabeli kõrvuti olevad väärtused määratud sisendruumi suundades kasvama, mis paneb mudeli väljundid suurenema need suunad. Oluline on see, et kuna need interpoleerivad otsingu tabeli väärtuste vahel, on võre mudelid sujuvad ja ennustused on piiratud, mis aitab testimise ajal vältida võltsitud suuri või väikeseid ennustusi. '

TensorFlow võre kasutamise õpetused leiate siin .

disainisordi määratlemise põhimõtted

Monotoonilised tehisintellekti mudelid ja tulevik

Alates seadmete kaitsmisest pahatahtlike rünnakute eest kuni loogiliste ja kasulike restoranisoovituste pakkumiseni on monotoonilised tehisintellektide mudelid osutunud ühiskonnale suureks õnnistuseks ja suurepäraseks tööriistaks, mida hallata. Siin on monotoonilised mudelid, mis juhatavad meid tehisintellekti ohutuse, peenuse ja mõistmise uude ajastusse. Ja nii ma ütlen, siin on monotoonilised tehisintellektide mudelid, siin on edasiminek.

Põhitõdesid mõistes

Mis on monotooniline sari?

Monotooniline seeria on seeria, mis kas monotoonselt suureneb või väheneb. Rida suureneb monotoonselt, kui selle tingimused aina suurenevad. Rida väheneb monotoonselt, kui selle terminid alati vähenevad.

Mida tähendab funktsiooni monotoonsus?

Funktsioon on monotooniline, kui see on kas monotooniline suurenemine või monotooniline vähenemine. Funktsioon f (x) suureneb monotoonselt, kui y> x viitab sellele, et f (y)> f (x). See on monotooniline vähenemine, kui y> x viitab sellele, et f (y)

Mis on ML-mudel?

Masinõppe (ML) mudel on matemaatiline algoritm, mis õpib sisendandmekogumist („treeninguandmed”) suutma uute andmete kohta ennustusi, ilma et oleks selgesõnaliselt programmeeritud, kuidas seda teha.

Mis on tehisintellekti monotoonsus?

Monotoonsus tehisintellektis (AI) võib viidata monotoonilisele klassifikatsioonile või monotoonilisele arutlusele. Monotoonne klassifikatsioon on tehisintellekti mudeli matemaatiline omadus, mis on tihedalt seotud monotoonse funktsiooni mõistega. Monotoonne arutluskäik on arutlusvorm, mis võib olla aluseks tehisintellekti süsteemi loogikale.

Mis on XGBoost mudel?

XGBoost on masinõppe algoritmi laialdaselt kasutatav rakendus, mida nimetatakse gradientide suurendamiseks. See saavutas kuulsuse tänu suurepärasele jõudlusele paljudel masinõppevõistlustel ning ka paljude auhindade võitmisega. XGBoost on saadaval Python, R, C ++, Java, Julia, Perl ja Scala.

Milleks on XGBoost hea?

XGBoost on keskmise suurusega (100k-1m) tabeliandmekogumites tavaliselt täpne ja usaldusväärne.

Avatud lähtekood: see pole nii hirmutav!

Tagumine Ots

Avatud lähtekood: see pole nii hirmutav!
Startupi jätkusuutliku kasvu valdamine ja asjakohaste KPI-de leidmine

Startupi jätkusuutliku kasvu valdamine ja asjakohaste KPI-de leidmine

Finantsprotsessid

Lemmik Postitused
Näpunäited ja kaalutlused kirjatüübi valimisel (koos infograafikaga)
Näpunäited ja kaalutlused kirjatüübi valimisel (koos infograafikaga)
Juhtumianalüüs: miks ma oma toodete jaoks AWS-i pilvinfrastruktuuri kasutan
Juhtumianalüüs: miks ma oma toodete jaoks AWS-i pilvinfrastruktuuri kasutan
Briifing: andmeladu
Briifing: andmeladu
Surm traatraamile. Otse kõrgele truudusele!
Surm traatraamile. Otse kõrgele truudusele!
ApeeScape käivitas vabakutselistele mõeldud vaba aja jälgimise rakenduse TopTracker
ApeeScape käivitas vabakutselistele mõeldud vaba aja jälgimise rakenduse TopTracker
 
Arendajate ja disainerite vahe on kadumas
Arendajate ja disainerite vahe on kadumas
API-d sotsiaalsetes võrgustikes: Interneti-portaal reaalsesse maailma
API-d sotsiaalsetes võrgustikes: Interneti-portaal reaalsesse maailma
Null kangelaseni: Kolvitootmise retseptid
Null kangelaseni: Kolvitootmise retseptid
Projekti- ja tootehalduse direktor
Projekti- ja tootehalduse direktor
Ameerika arendaja Rachell Calhoun võidab viienda ApeeScape'i stipendiumi
Ameerika arendaja Rachell Calhoun võidab viienda ApeeScape'i stipendiumi
Lemmik Postitused
  • kas node js vajab veebiserverit
  • mis on mobiilne veebirakendus
  • javascripti erandite käsitlemise parimad tavad
  • lift vs uber turuosa
  • kuidas luua erc20 tunnust
Kategooriad
  • Tulud Ja Kasv
  • Tehnoloogia
  • Planeerimine Ja Prognoosimine
  • Projekti Juht
  • © 2022 | Kõik Õigused Kaitstud

    portaldacalheta.pt