The present invention relates generally to an apparatus and a method for determining a location-spoofing application.
Global Positioning System (GPS) spoofing is a major problem to ride-hailing organizations and service providers as drivers are able to spoof their GPS information to get better allocation or to take a completion of rides and leads to a loss of trust tor ride-hailing organizations in the mind of passengers as well as drivers.
To spoof their GPO information, drivers usually use applications developed by third party developers for this specific purpose. Therefore, it becomes imperative to identify or keep a tab on such applications and determine a location-spoofing application to address the above issues.
According to a first aspect, the present disclosure provides an apparatus for determining a location-spoofing application, the apparatus comprising: at least one processor; and at least one memory including computer program code: the at least one memory and the computer program code configured to, with at least one processor, cause the apparatus at least to: generate a numeric representation of an application name of an application used for generating a geolocation position signal of a user using a variable derived from a list of application names relating to a plurality of other applications capable of generating a geolocation position signal of a user; and determine a prediction on whether the application is a location-spoofing application based on a scale of the generated numeric representation of the application name.
According to a second aspect, the present disclosure provides a method for determining a location-spoofing application, the method comprising: generating, by a prediction module of a location-spoofing application determination system, a numeric representation of an application name of an application used for generating a geolocation position signal of a user using a variable derived, by the prediction module, from a list of application names relating to a plurality of other applications capable of generating a geolocation position signal of a user; and determining, by the prediction module, a prediction on whether the application is a location-spoofing application based on a scale of the generated numeric representation of the application name.
Additional benefits and advantages of the disclosed embodiments will become apparent from the specification and drawings. The benefits and/or advantages may be individually obtained by the various embodiments and features of the specification and drawings, which need not all be provided in order to obtain one or more of such benefits and/or advantages.
Embodiments and implementations are provided by way of example only, and will be better understood and readily apparent to one of ordinary skill in the art from the following written description, read in conjunction with the drawings, in which:
User—a user may be any suitable type of entity, which may include a person, a rider, a pillion rider, a driver or a passenger who uses an application for generating a geolocation position signal. A user who is registered to a remote assistance server will be called a registered user. A user who is not registered to the remote assistance server will be called a non-registered user. The term user will be used to collectively refer to both registered and non-registered users.
Application—an application (or app) is a computer program designed to carry out by a processor of a computer or a mobile device to carry out a specific task, i.e. generate a geolocation position signal of a user of the computer or the mobile device in various embodiment of the present disclosure. An application may refer to a new application or an application with unknown geolocation position signal validity that is yet to be determined and predicted if it is a location-spoofing application. In various embodiments below, the term “location spoofing application” may be used interchangeably with the term “GPS spoofing application”. The term “application” and “package” will be used interchangeably throughout the present disclosure.
Application name—an application name is associated with an application and can be used to differentiate the application from another application by a processor of a computer or a neural network or by a user. In various embodiments, an application name corresponds to a sequence of two or more characters. For sake of simplicity, English application names, formed using 26 English letters (A-Z), 10 digits (0-9) and special characters (non-alphabetic or numeric characters, e.g. blank character, next-line character and punctuations) are used to illustrate various embodiments in the present disclosure, however, it is appreciated that the application name may additionally or alternatively formed using letters or characters of a language other than English.
Character combination—a character combination is a combination of two or more consecutive character forming an application name. For example, the word “map” has three characters “m”, “a” and “p” and three character combinations “ma”, “ap” and “map”. In various embodiments below, a character combination of a character in an application name refers to a character combination of the character and one or more characters prior to and/or following the character in the application name. For example, a character combination of a character “a” in an application name “GPSmap” may include “GPSma”, “PSma”, Sma”, “ma” and “ap”.
Prediction—a prediction refers to a determination and classification results on how likely an application is a location-spooling application. According to various embodiments, a prediction on whether an application is a location-spoofing application is determined and classified based on a scale of a numeric representation of the application's name. For example, an application may be classified and predicted as a location-spoofing application if it has a scale of a numeric representation of its application name close to 1 and may be classified and predicted otherwise if the scale is close to 0.
Numeric representation-a numeric representation is a number, a sequence of numbers, a matrix or a combination thereof which is generated and processed by a processor of a computer or a neural network to identify/represent the application name (or a character or a character combination) and differentiate the application name from another application name (or another character or another character combination). An example of a numeric representation is a 16-dimension vector. In various embodiments below, a numeric representation of an application name may be scaled from 0 to 1, and such scale of a numeric representation of an application name may correspond to a prediction on whether an application associated with the application name is a location-spoofing application. In one embodiment, an application associated with a scale of a numeric representation of its application name closer to 1 or 0 is determined/predicted to be or not to be a location-spoofing application respectively. Additionally, a sigmoid function is applied to the numeric representation to normalize its scale to be within 0 to 1.
A numeric representation of an application name is determined based on a numeric representation of each character and/or character combination of the application name, for example by merging the numeric representations of the characters and/or character combinations forming the application name into one numeric representation through mathematical operators such as addition and multiplication. In an embodiment, each character (e.g. English letters, digits and special characters) has a pre-set numeric representation stored in a database accessible by the computer or the neural network, and upon identifying each character forming the application name and its corresponding pre-set numeric representation, a variable trained or derived using a list of known applications is applied to the pre-set numeric representation to generate a numeric representation of the character. In one example, a pre-set numeric representation of a character is a vector (e.g. vector with same or different dimensions, or other types of vector) preconfigured by a processor for general application, and a variable is matrix (e.g. kernel matrix) configured to be applied to the pre-set representation to yield a 16-dimension vector representation of the character used for the purpose of determining a location-spoofing application.
A (pre-set) numeric representation of a character may be derived from a list of known applications and their application names. A scale of a (pre-set) numeric representation of a character, for example ranged from 0 to 1, may indicate a weightage of the character, if it appears in an application name of an application, in affecting a subsequent determination of a prediction on whether the application is a location-spoofing application.
In another embodiment, a numeric representation of a character combination is determined based on numeric representations of characters forming the character combination, for example, by merging the numeric representations of the characters forming the character combination into one numeric representation through mathematical operators such as addition and multiplication. Similarly, a scale of a numeric representation of a character combination, for example ranged from 0 to 1, may indicate a weightage of the character combination, if it appears in an application name of an application, in affecting a subsequent determination of a prediction on whether the application is a location-spoofing application.
Variable—a variable refers to a number, a sequence of numbers, a matrix or a combination thereof applied in a model or an algorithm to process and generate a numeric representation of a character, a character combination and/or an application name of an application. The same variable or different variables can be applied in a hierarchical model or a neural network consisting of more than one layer of processing. Examples of a variable includes a convolution filter/matrix. In various embodiments below, applying a variable may refer to sending an input to a neural network (input layer), processing the input by the neural network through a series of algorithm or layers and generating by the neural network (output layer) an output, the input and the output in various embodiments below referring to an application name and a numeric representation of the application name.
A variable is derived, for example by a neural network, from a list of application names corresponding to a list of known applications such as location-spoofing applications that have been disallowed (banned) from being used for generating a geolocation position signal of a user and known location-spoofing applications that are allowed to be used by less than a pre-configured number of users (e.g. less than 5000 users) for generating a geolocation position signal. This is assuming that the applications that are used more than the pre-configured number of users (e.g. more than 5000 users) are popular applications and it is unlikely that such applications are used to spoof location. In another embodiment, the list of known application may also include applications that known to be legitimate and are not location-spoofing applications (hereinafter referred to as “known legitimate applications” in the present disclosure). A variable is modified and optimized such that when generating a numeric representation of an application name of a known application (with a known prediction outcome) using the variable, a resulting scale of a numeric representation of the application name corresponds to the known prediction outcome, i.e. an outcome of being determined or predicted as a location-spoofing application (e.g. a scale of a numeric representation close to 1). In various embodiments, such modification and optimization of the variable may be referred to as neural network training.
Additionally or alternatively, a variable is modified and optimized based only on a list of application names corresponding to a list of known location-spoofing applications that are used by at least one user to generate a geolocation position signal within a certain time period (e.g. in the past year, in recent three months, etc.).
In an embodiment, a new list of known applications with known prediction outcome by a neural network is extracted, and the variable is further modified and optimized using the new list at every fixed time interval (e.g. every month). With more variable optimization using more training data (known applications) and frequency, the variable can the be used to make new and better predictions.
Database—a database stores data relating to a user (driver) and an application, which includes user accounts and details, records of transactions, application name, application identifier, application data, application type and details, data usage, records of application usage and number of users of application obtained from mobile devices and computers of the users. Unless specified otherwise, an application stored in the database is assigned to an identifier and can be referred to as a known application as at least part of data or details together with the identifier of the application can be used to identify the application and differentiate the application from other application. A database may store a master list of known applications. Examples include a master list of applications that have been banned from being used, a master list of applications that are allowed to be used by less than a pre-configured number of users and a master list of applications that are known to be legitimate and are not location-spoofing applications. In one embodiment, such master list of applications will be used to label one or more applications and those applications that are labelled will form a list of known applications for optimizing variable, model and neural network.
Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears.
It is to be noted that the discussions contained in the “Background” section and that above relating to prior art arrangements relate to discussions of devices which form public knowledge through their use. Such should not be interpreted as a representation by the present inventor(s) or the patent applicant that such devices in any way form part of the common general knowledge in the art.
Some portions of the description which follows are explicitly or implicitly presented in terms of algorithms and functional or symbolic representations of operations on data within a computer memory. These algorithmic descriptions and functional or symbolic representations are the means used by those skilled in the data processing arts to convey most effectively the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities, such as electrical, magnetic or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated.
Unless specifically stated otherwise, and as apparent from the following, it will be appreciated that throughout the present specification, discussions utilizing terms such as “receiving”, “calculating”, “determining”, “updating”, “generating”, “initializing”, “outputting”, “receiving”, “retrieving”, “identifying”, “dispersing”, “authenticating” or the like, refer to the action and processes of a computer system, or similar electronic device, that manipulates and transforms data represented as physical quantities within the computer system into other data similarly represented as physical quantities within the computer system or other information storage, transmission or display devices.
The present specification also discloses apparatus for performing the operations of the methods. Such apparatus may be specially constructed for the required purposes, or may comprise a computer or other device selectively activated or reconfigured by a computer program stored in the computer. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various machines may be used with programs in accordance with the teachings herein. Alternatively, the construction of more specialized apparatus to perform the required method steps may be appropriate. The structure of a computer will appear from the description below.
In addition, the present specification also implicitly discloses a computer program, in that it would be apparent to the person skilled in the art that the individual steps of the method described herein may be put into effect by computer code. The computer program is not intended to be limited to any particular programming language and implementation thereof. It will be appreciated that a variety of programming languages and coding thereof may be used to implement the teachings of the disclosure contained herein. Moreover, the computer program is not intended to be limited to any particular control flow. There are many other variants of the computer program, which can use different control flows without departing from the spirit or scope of the invention.
Furthermore, one or more of the steps of the computer program may be performed in parallel rather than sequentially. Such a computer program may be stored on any computer readable medium. The computer readable medium may include storage devices such as magnetic or optical disks, memory chips, or other storage devices suitable for interfacing with a computer. The computer readable medium may also include a hard-wired medium such as exemplified in the Internet system, or wireless medium such as exemplified in the GSM mobile telephone system. The computer program when loaded and executed on such a computer effectively results in an apparatus that implements the steps of the preferred method.
As mentioned earlier, there is a need to develop a solution to determine a location-spoofing application. Determine a location-spoofing application, namely: (i) preventing usage of such application by drivers: (ii) helping operations team determine the presence of suspicious applications on drivers' phones.
Currently this process is done by using a combination of rules and manual review by an officer (e.g. quality assurance/fraud investigation officer) on package names on drivers' phones. For example, any application that contains ‘fake’ in its name might get put on the ban list or an officer might stumble upon an application with a gibberish name and then that package name is added to the ban list. Though there usually is a clear cut pattern the GPS spoofing application follow in terms of names, this process is very tedious and time consuming for both as there are millions of applications present on drivers' phones and the pattern of the name for GPS spoofing applications change over time.
The present disclosure provides a solution to continuously train a machine learning model that classifies each application on drivers' phones as a GPS spoofing application or not a GPS spoofing app. The advantages of using this solutions is that (i) it can learn patterns from the entire dataset and do predictions at a scale and speed that is not possible for humans and (ii) it is an evolving system that learns and optimizes over time and therefore it becomes hard for the drivers to evade detection and determination.
The system 100 comprises a requestor device 102, a location-spoofing application prediction module (apparatus) 108, a remote assistance server 104, remote assistance hosts 106a-106n, and a database 112.
The requestor device 102 is in communication with location-spoofing application prediction module 108 and/or a remote assistance server 104 via a connection 101 and 103, respectively. The connection 101 and 103 may be wireless (e.g., via NFC communication, Bluetooth, etc.) or over a network (e.g., the Internet). The connection 101 and 103 may also be that of a network (e.g., the Internet). In one arrangement, the location-spoofing application prediction module 108 and the request device 102 are combined and the connection 101 may be an interconnected bus.
The location-spoofing application prediction module 108 is further in communication with the remote assistance server 104 via a connection 105. The connection 105 may be over a network (e.g., a local area network, a wide area network, the Internet, etc.). In one arrangement, the location-spoofing application prediction module 108 and the remote assistance server 104 are combined and the connection 105 may be an interconnected bus.
The remote assistance server 104, in turn, is in communication with the remote assistance hosts 106a-106n via respective connections 107a-107n. The connections 107a-107n may be a network (e.g., the Internet).
The remote assistance hosts 106a-106n are servers. The term host is used herein to differentiate between the remote assistance hosts 106a-106n and the remote assistance server 104. The remote assistance hosts 106a-106n are collectively referred to herein as the remote assistance hosts 106, while the remote assistance host 106 refers to one of the remote assistance hosts 106. In an example, the remote assistance host 106 may be one of a computer, a mobile device, a geolocation positioning device, a computing device in a watch or similar wearable and the like used and managed by a driver. The remove assistance host 106 may also be a vehicle telematics system, a driver monitoring system, or one that stores information relating to a driver or other operations. The remote assistance host 106 is configured to send a signal (e.g. geolocation position signal), depending on the type of the host 106 and signal, to the requestor device 102, location-spoofing application prediction module 108 and/or database 112.
The remote assistance server 104 is a central server that manages resources and application data communications to/from each of the remote assistance hosts and decides which of the remote assistance hosts 104 to administers resources and transmit/receive application data to/from via connections 107a-107n. The connections 107a-107n are collectively referred to herein as the connections 107, while the connection 107 refers to one of the connections 107. The connections 107 may be wireless (e.g., via NFC communication, Bluetooth, etc.) or over a network (e.g., the Internet).
Use of the term ‘server’ herein can mean a single computing device or a plurality of interconnected computing devices which operate together to perform a particular function. That is, the server may be contained within a single hardware unit or be distributed among several or many different hardware units.
In the illustrative embodiment, each of the devices 102 and 106, module 108, and server 104 provides an interface to enable communication with other connected devices 102 and 106, module 108 and/or server 104. Such communication is facilitated by an application programming interface (“API”). Such APIs may be part of a user interface that may include graphical user interfaces (GUIs), Web-based interfaces, programmatic interfaces such as application programming interfaces (APIs) and/or sets of remote procedure calls (RPCs) corresponding to interface elements, messaging interfaces in which the interface elements correspond to messages of a communication protocol, and/or suitable combinations thereof.
The remote assistance server 104 is associated with an entity (e.g. a company or organization or moderator of the service). In one arrangement, the remote assistance server 140 is owned and operated by the entity operating the server 108. In such an arrangement, the remote assistance server 140 may be implemented as a part (e.g., a computer program module, a computing device, etc.) of the module 108.
The remote assistance server 104 is also configured to manage the registration of users. A registered user (driver) has a remote access account (see the discussion above) which includes details of the user. The registration step is called on-boarding.
It is not necessary to have a remote assistance account at the remote assistance server 104 to access the functionalities of the remote assistance server 104. However, there are functions that are available to a registered user. For example, it may be possible that only a registered user is able to receive renumeration as a driver of a ride-hailing service.
The on-boarding process for a user is performed by the user through one of the host device 106. In one arrangement, the user downloads an application (which includes the API to interact with the remote assistance server 104). In another arrangement, the user accesses a website (which includes the API to interact with the remote assistance server 104) through the host 106. The user is then able to interact with the remote assistance server 104 to via the host 106.
Details of the registration include, for example, name of the user, address of the user, emergency contact, driver license and other traffic accident information and the like. Once on-boarded, the user would have a remote assistance account that stores all the details, for example in database 112 or a separate database (not shown) within the server 104.
The requestor device 102 is associated with an entity (e.g. a company or organization) or a subject (e.g. requestor) who is a party to a request to determine a location-spoofing application and manages (e.g. establishes, administers) resources relating to a driver or a user of a host 106. The requestor may be quality assurance/fraud investigation officer who is assisting to ensure the drivers comply with proper conducts. The requestor device 102 may be a computing device such as a desktop computer, an interactive voice response (IVR) system, a smartphone, a laptop computer, a personal digital assistant computer (PDA), a mobile computer, a tablet computer, and the like. In one example arrangement, the requestor device 102 is a computing device in a watch or similar wearable and is fitted with a wireless communications interface.
The location-spoofing application prediction module 108 comprising a neural network (or training module) 110 is configured to determine a location-spoofing application. The module 108 may be a standalone apparatus or combined with the requestor device 102, database 112 and/or remote assistance server 104 to form a single apparatus. The module 108 comprises at least one processor (not shown) and at least one memory (not shown) including computer program code configured to, with the at least one processor, cause the module 108 to generate, using neural network 110, a numeric representation of an application name of an application used for generating a geolocation position signal of a user using a variable derived from a list of application name relating to a plurality of other applications capable of generating a geolocation position signal of a user. The location-spoofing application prediction module is further configured to determine a prediction on whether the application is a location-spoofing application based on a scale of the numeric representation of the application name generated by the neural network 110. Such operation may be initiated upon receiving a request from the requestor device 102.
In an embodiment, the database 112 is configured to store data relating to a user (driver) and an application, which includes user accounts and details, records of transactions, application data, application type and details, data usage, records of application usage and number of users of application obtained from mobile devices and computers of the users. The database 112 may store a master list of applications that have been banned from being used and a master list of applications that are allowed to be used by less than a pre-configured number of users.
In an embodiment, application names of applications that are used by all users (driver) in within a time period (e.g. in the past year) for generating a geolocation position signal are extracted/received from the hosts 106. The location-spoofing application prediction module 108 may be configured to compare the extracted/received application names against a master list of known location-spoofing applications stored in the database 112 and determine if any of the extracted/received application names matches one of the application names of the known applications in the master list. If any of the extracted/received application names matches one of the known applications in the master list, the extracted/received application name will be labelled (e.g. labelled as 1) and included in a list of application name for use to optimize variable and train the neural network 112.
The detailed operations of the neural network 110 and how the variable is derived, optimized, i.e. how the neural network 110 is trained, will be described in
In one embodiment, the location-spoofing application prediction module 108 is configured to, at every fixed time interval (e.g. every month), re-compare the extracted/received application names against the master list of known applications stored in the database 112, re-label and re-extract a new list of applications and optimize the variable and the neural network 110 based on the new list of applications such that the location-spoofing application prediction module 108 can make new and better predictions.
In step 308, a step of classifying each application as a GPS spoofing application or not a GPS spoofing application. This step may be carried out by generating a numeric representation of an application name of each new/unknown application and application not labelled as 1 using the derived variable, and determining a prediction on whether the each new/unknown application and application not labelled as 1 is a GPS spoofing application or not a GPS spoofing application based on a scale of the numeric representation.
In step 310, a step of including the GPS spoofing application determined and predicted in step 308 into a ban list or the master list of applications that were banned for being used to spoof GPS is carried out. In step 312, it is determined if a fixed interval has passed, for example after the classification and determination of location-spoofing applications. If so, steps 304-310 are carried out again.
In this example, the application name in the input layer 402 comprises 5 characters w1-w5. In an embodiment, in the input layer 402, the neural network is configured to identify a pre-set numeric representation 402a-402e for each character input w1-w5. The pre-set numeric representation 402a-402e is then input to the character level embedding layer 404 to generate a numeric representation of the character w1-w5.
The neural network 400 is then configured to input the numeric representation of each character into bidirectional LSTM layer 406. In this layer 406, for each character, a numeric representation of a character combination of the character and one or more characters of the application name prior to and/or following the character is generated. For example, upon generating a numeric representation of character w3, numeric representations of character combinations of characters w3 and w4, and characters w2 and w3 are respectively generated in the bidirectional LSTM layer 403. Alternatively or additionally, upon generating a numeric representation of character w3, numeric representations of character combinations of characters w3, w4 and w5, and characters w1, w2 and w3 are respectively generated in the bidirectional LSTM layer 403. In this embodiment, multiple numeric representations generated in relation to a character may be merged or stacked the numeric representation of the character to form a merged numeric representation 406a-406e.
The neural network is further configured to input all numeric representations relating to character combinations generated in the bidirectional LSTM layer 406, merge them through a sigmoid layer 408 such that a numeric representation of the application name is generated and fall within a pre-determined range of numeric representation of 0 to 1. The neural network then configured to output the numeric representation of the application name through output layer 410 to determine a prediction on whether an application associated with the application name is a location-spoofing application based on a scale of the numeric representation.
It is noted that, prior to predicting or determining if a new/unknown application is a location-spoofing application, the neural network 400 is optimized/trained (with corresponding variable(s) applied in the character level embedding layer 404 and the bidirectional LSTM layer 406) using a list of known application names (with known prediction outcomes), e.g. a list of known location-spoofing application name, such that, when every known application name from the list of known applications is input to the neural network 400 through the character level embedding layer 404, the bidirectional LSTM layer 406 and the sigmoid layer 408 and applications of the variable, the network neural 400 is capable of generating a resulting scale of a numeric representation of every known application name and a prediction corresponding to its known outcome (e.g. close to 0 or 1) in the output layer 410. In various embodiments, the neural network 400 is configured to apply such variable derived/optimized from the list of known location-spoofing applications to process a numeric representation input 402a-402e and 404a-404e to generate a numeric representation output 404a-404e and 406a-406e in the character level embedding layer 404 and the bidirectional LSTM layer 406 respectively.
In one example, the input to the input layer 402 is a package name ‘com.grab’. The package name is passed through the character layer embedding layer 404. In the character level embedding layer 404, the package name is broken down and each distinct character (i.e. “c”, “o”, “m”, “.”, “g”, “r”, “a”, “b”) forming the package name is identified. For example, a 16-dimension vector is used a numeric representation of a character. After passing through the character level embedding layer 404, each character in the package name may be represented a 16-dimension vector as follows:
After converting the characters of the package name into vector representations in the character level embedding layer 404, the output of the character level embedding layer 404 is then input to the bidirectional LSTM layer 406.
In forward direction LSTM of the bidirectional LSTM layer 406, the processing of the LSTM layer 406 is carried out in a forward direction, i.e. with incremental t value. That is, after the processing at t-th position/character is completed, the processing at (t+1)-th will be carried out (it any). For example for ‘com.grab’, the embedding of c would be passed first, then o and so on.
In a forward direction LSTM of the bidirectional LSTM layer 406, the following equations is applied:
A hidden state at (t−1)-th position/character ht−1 502 (previous output of input xt−1 (not shown)) and a current input from the character level embedding 404 at t-th position/character xt 504 is concatenated into an array or a vector of input at t-th position/character [ht−1, xt] (hereinafter referred to as input vector 505). For example, for a package name ‘com.grab’, when t=7, a hidden state at 6th position (an output of the LSTM processing for character “r”) and a current input at 7th position (output from character level embedding 404 for character “a”) are combined.
The input vector 505 is then sent to a forget gate. The forget gate determines which data/information and what extent of the data/information should be thrown away or kept by applying a first variable, e.g. a convolution weight Wf 506a and a sigmoid function σ, 506b to generate a value between 0 to 1. A sigmoid output value closer to 0 means to forget and a sigmoid output value closer to 1 means to keep. The sigmoid output is referred to a forget vector and will send for cell state processing at block 506c.
The input vector 505 is also sent to the input gate. The input gate determine which values is important and will be updated. In the input gate, a second variable, e.g. a convolution weight Wi 507a and a sigmoid function σ 507b, is applied to the input vector 505 to generate a value between 0 to 1. A value closer to 0 means not important and a value closer to 1 means important. A third variable, e.g. convolution weight Wc 508a and a tanh activation function σ 508b is also applied to the input vector to squish values between −1 and 1. By multiplying the sigmoid output from block 507b to the tanh output from block 508b, the sigmoid output will determine which information is important to keep from the tanh output and form an output of the input gate for further cell state processing at block 508d.
Regarding cell state, the cell state at (t−1)-th position Ct−1 (previous output of input xt−1 (not shown)) is processed through a multiplication by the forget vector at block 506c. This will result in forgetting/keeping certain values in the cell state. Subsequently, the cell state is further processed through an addition by the output of the input gate and updates the cell state to a new cell state Ct at block 508d. The new cell state generated at t-th position/character is output to the next LSTM layer processing for (t+1)-th position/character, i.e. a character subsequent to the character at t-th position, to generate a new cell state Ct+1 and a new hidden state ht+1.
Noting the input vector 505 comprises a current input xx from the character level embedding 404 at t-th position/character xt 504 and previous hidden state at (t−1)th position ht−1 502, the input vector 505 is also transferred to the output gate to determine what the next hidden state ht should be. In the output gate, a fourth variable, e.g. a convolution weight Wo 509a and a sigmoid function σ 509b is applied to the input to generate a value between 0 to 1. A tanh activation function 510b is then applied to the new cell state generated at block 508d. By multiplying the sigmoid output from block 509b to the tanh output from block 510b, the sigmoid output will determine which/what information the next hidden state ht should carry. A new hidden state ht is generated and then sent to the next LSTM processing for (t+1)-th position/character, i.e. a character subsequent to the character at t-th position, to generate a new cell state Ct+1 and a new hidden state ht+1.
In backward direction LSTM of the bidirectional LSTM layer 406, the processing of the LSTM layer 406 is carried out in a backward direction, i.e. with decremental t value. That is, after the processing at t-th position/character is completed, the processing at (t−1)-th will be carried out (if any).
In a backward direction LSTM of the bidirectional LSTM layer 406, the same equations is applied by replacing “t−1” to “t+1”. A hidden state at (t+1)-th position/character ht+1 (previous output of input xt+1) and a current input from the character level embedding 404 at t-th position/character xt 504 is concatenated into an array of input at t-th position/character [ht+1, xt] prior to processing through the forget gate, the input gate and the output gate. Similarly, the cell state at (t+1)-th position Ct+1 (previous output of input xt+1) is processed through a multiplication by the forget vector output from the forget gate and an addition by the output of the input gate to update the cell state to a new cell state Ct. The new cell state generated at t-th position/character is output to the next LSTM layer processing for (t−1)-th position/character, i.e. a character prior to the character at t-th position, to generate a new cell state Ct−1 and a new hidden state ht−1.
In various embodiment, a hidden state, i.e. the output of the LSTM layer 406, is a numeric representation of a character combination, e.g. a vector, which can be used to as an output of the bidirectional LTSM layer 406 to the next layer (e.g. sigmoid layer 408 of neural network 400) for determining a prediction. Where the hidden states generated at the same t-th position in both forward and backward directions LSTM may be different, such hidden states at the same t-th position may be merged or concatenated to generate a single hidden state at t-th position of the bidirectional LTSM layer 406 prior to outputting it to the next layer for determining a prediction.
In the sigmoid layer 408 of the neural network 400, the output of the bidirectional LSTM layer 406 is transformed using the following equation:
where e is euler's number, w is weigh vector of 16 dimensions and h is the output (hidden state) of the previous layer (e.g. LSTM layer 406).
The sigmoid layer 408 allows a transformation of the output h from the LSTM layer 406 into a value between 0 to 1 which in turn can be used for making classification and determining a prediction. In one embodiment, an output value of the sigmoid layer 408 greater than 0.5 will be determined/predicted as a location spoofing application.
In various embodiment, when an application name of a known application (with known prediction outcome or actual/known output value of the sigmoid layer 408), e.g. known location-spoofing application, is input to neural network 400, the variables, such as convolution weights Wt, Wi, Wc, and Wo, applied in the forget gate, the input gate, the estimated cell state and the output gate in the bidirectional LSTM layer 406 respectively and weigh vector w in the sigmoid layer 408 are optimized and modified to generate a sigmoid value that matches the actual/known sigmoid value thus determining a prediction (e.g. a location-spoofing application) matching the known prediction outcome of the known application. This variable optimizing process is repeated and applied to all the other known applications in the database.
The neural network 400 is continuously optimized with more training data over time. In one embodiment, the neural network is configured to, at every fixed time interval (e.g. every month), retrieve a new list of known location-spoofing application names (with known prediction outcomes) from a database, optimize the variable and the neural network 110 based on the new list of applications such that the location-spoofing application prediction module 108 can make new and better predictions.
The foregoing describes only some embodiments of the present disclosure, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
Number | Date | Country | Kind |
---|---|---|---|
10202108554U | Aug 2021 | SG | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/SG2022/050554 | 8/2/2022 | WO |