Aspects of the present disclosure relate to wireless channel modeling (e.g., modeling or estimating the medium through which wireless communications are transmitted).
In many conventional systems, wireless channel modeling is driven by collecting field measurements using specialized equipment, making assumptions of the propagation medium, and carefully estimating the model parameters. These steps make modeling the channels a time-consuming process that demands significant domain expertise.
Additionally, wireless channels are conventionally modeled as a linear system. In some such systems, the intricacies of propagation channels are (approximately) captured mainly through a cluster of channel taps with their gains and delays. Generally, such conventional channel models are standardized models that, though widely used for evaluation of wireless communication scenarios, have inherent inaccuracies and inefficiencies. For example, these conventional models rely on certain abstractions and simplifications, such as pre-defined delay profiles with stochastic channel gains.
In conventional systems, it is cumbersome or impossible to build a channel model from field data measured in an environment. Some current methods operate based on selecting a channel model and fitting the parameters to the measured data, but this process is not automated and involves manual engineering. Additionally, although the linearity assumption is in itself generally adequate or reasonable, the received signal in practice undergoes non-linear effects due to things such as the quantization effect, amplifier saturation, and hardware imperfections. Further, the self-interference in full duplex channels serves as another deviation from a linearity assumption.
Finally, conventional models are generally not differentiable, which makes these models problematic for end-to-end neural network designs, as certain optimization methods, such as back-propagation, call for end-to-end differentiable architectures.
Accordingly, techniques are needed for improved wireless channel modeling.
Certain aspects provide a method of generating simulated output data, comprising: receiving a first set of input data for data transmitted, from a transmitter, as a signal in a wireless channel; generating a channel model for the wireless channel using a generative adversarial network (GAN); and generating a first set of simulated output data by transforming the first set of input data using the channel model.
Certain aspects provide a method of training a channel model, comprising: receiving a set of wireless measurements corresponding to a wireless signal, comprising: a first set of input data for data transmitted as a wireless signal, and a first set of output data for the wireless signal when received; and training a generative adversarial network (GAN), based on the set of wireless measurements, to generate a channel model for the wireless signals, wherein the channel model can be used to simulate output data based on input data.
Other aspects provide processing systems configured to perform the aforementioned method as well as those described herein; non-transitory, computer-readable media comprising instructions that, when executed by one or more processors of a processing system, cause the processing system to perform the aforementioned methods as well as those described herein; a computer program product embodied on a computer-readable storage medium comprising code for performing the aforementioned methods as well as those further described herein; and a processing system comprising means for performing the aforementioned methods as well as those further described herein.
The following description and the related drawings set forth in detail certain illustrative features of one or more aspects.
The appended figures depict certain features of the one or more aspects and are therefore not to be considered limiting of the scope of this disclosure.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the drawings. It is contemplated that elements and features of one aspect may be beneficially incorporated in other aspects without further recitation.
Aspects of the present disclosure provide techniques for improved wireless channel modeling.
In some aspects, to address the conventional challenges and enable rapid channel modeling with low overhead, a data-driven approach is used to learn wireless channel models from collected measurements (e.g., on device). In some aspects, the simulation system does so by leveraging a generative adversarial network (GAN), which enables the model to learn a distribution over stochastic wireless channels (e.g., single-input single-output (SISO) channels, multiple-input single-output (MISO) channels, single-input multiple-output (SIMO) channels, and multiple-input multiple-output (MIMO) channels) from observed measurements. In at least one aspect, the model can implicitly model the MIMO channel as a distribution of time-domain band-limited impulse responses, thereby making the channel invariant to certain input configuration changes (enabling the model to simulate data accurately even when the input configuration differs from the data used during training). For example, the model may be used to accurately simulate any number of orthogonal frequency-division multiplexing (OFDM) subcarriers, cyclic prefix (CP) lengths, and the like, regardless of what these parameters were set to during training.
It is generally not trivial to model complex communication channels using various machine learning architectures given the complexity of the design choices made to develop and train these architectures. Conventional approaches are not tractable for use in various modern estimation and detection processes. For example, in modern communication systems, using techniques like OFDM, channels are parametrized mostly by a linear transformation which avoids inference directly over the parameters of the channel. Additionally, with growing dimensionality of the channel (such as in massive MIMO systems) or with increasing complexity of the modeling, the simulation or inference phase becomes signficantly more time consuming, rendering conventional approaches impractical for many deployments.
In some aspects of the present disclosure, the wireless channel is represented using its conditional distributions, enabling inclusion of a variety of nonlinear effects. In some aspects, this conditional distribution is learned using a GAN that can model complex (and not necessarily linear) channels. In an aspect, the GAN includes a deep neural network (DNN)-based generative model. During training, the objective for the GAN may be to train a DNN model that captures the distribution of some observed input data, allowing one to sample new datapoints. In some GAN aspects, this is achieved by leveraging two machine learning models (e.g., DNNs): a generator which transforms a random noise vector (e.g., drawn from an isotropic Gaussian distribution) into a sample of the target distribution, and a discriminator which predicts whether a given sample was generated by the generator (e.g., considered “fake”) or is a sample from the actual target distribution (e.g., considered “real”). The two models (generator and discriminator) may be trained simultaneously using one or more min-max objectives
In at least one aspect, the generator of the GAN is trained to generate a channel model (e.g., represented as a three-dimensional tensor), which can then be combined with input data (e.g., the data transmitted from a transmitter in the wireless channel) to yield simulated or predicted output data (e.g., the data output from the wireless channel and subsequently received by a receiver). In an aspect, the discriminator of the GAN is similarly trained to classify data as either real (e.g., true output data in a wireless system) or simulated/fake (e.g., data generated using the channel model). These two components can then be used to iteratively train each other, leading to a generator network that can produce accurate and robust channel models.
In some aspects, as this channel model is produced using a neural network (e.g., the generator network of a GAN), the channel model can be used to generate simulations using parallelization, enabling vastly improved efficiencies and reduced latency when generating predicted or simulated data. Further, the model enables back-propagation through the model, and inference over its parameters. As the model can be learned systematically using gradient-descent-based methods, its neural realization makes the model scalable to higher dimensions.
In some aspects, the model can be trained to efficiently represent MIMO channels (e.g., where the number of transmitter and receiver antennas are both greater than one), while conventional systems fail to enable such ability. Further, due to the proposed architecture, the simulation system can often use low-resolution measurements (e.g., less than 100 MHz bandwidth), enabling use on limited devices and with limited data.
Beneficially, the learned channel models generated using aspects of this disclosure exhibit statistics (e.g., impulse and frequency responses) that are similar to the underlying wireless channel, allowing the channel model to be used to effectively predict, simulate, or otherwise estimate the impact of the channel on the transmitted data. This rapid, accurate, and efficient wireless modeling can enable a wide variety of significantly improved techniques and solutions, such as improved management and configuration of transmitting and receiving devices, resulting in improved wireless communications.
In the illustrated example, a wireless physical layer 105 exists connecting a transmitter 110 and receiver 120 via a wireless channel 115. Generally, the transmitter 110 is configured to transmit data via a wireless signal (e.g., through the wireless channel 115) to the receiver 120. The receiver 120, in turn, is configured to receive the data via the wireless signal. Although the illustrated example depicts a single transmitter 110 and a single receiver 120, there may be any number of transmitters and receivers in the environment 100. Additionally, each transmitter 110 and receiver 120 may include any number of antennas (which may enable MIMO communications).
Further, though a discrete transmitter 110 and receiver 120 are depicted, in some aspects, the transmitter 110, receiver 120, or both may configured to both transmit and receive data (e.g., each acting as a transceiver). In aspects, the wireless physical layer 105 may correspond to any number of wireless technologies, including a wireless local area network (WLAN) such as Wi-Fi, a cellular connection (such as 4G, 5G, etc.), and the like. In some aspects, the transmitter 110 and receiver 120 communicate via a MIMO signal. For example, the transmitter 110 and/or receiver 120 may have multiple antennas, enabling data to be transmitted along multiple transmission paths or links in the wireless channel 115.
As illustrated, the transmitter 110 receives an input data 125 (e.g., a series of bits in a communication), and transmits a corresponding set of input signal 130 (labeled “x” in the depicted example). In some aspects, the input signal 130 is referred to as input data, as this signal is used as input to the wireless channel 115. In some aspects, the input signal 130 may alternatively be referred to as transmitted data. In some aspects, the input signal 130, represented as x, corresponds to the input data 125, encoded according to the transmission protocol being used. For example, x may be a MIMO signal representing the input data 125.
In an aspect, the wireless channel 115 may modify, transform, or otherwise affect the transmitted signal in a variety of ways due to physical realities of the space and/or the antennas of the transmitter 110 and receiver 120, such as interference in the channel, signal noise, antenna imperfections, attenuation, signal reflection, and the like. As a result, the initial input signal 130 is transformed, by the wireless channel 115, into an output signal 135 (labeled “y” in the illustrated example). That is, the characteristics of the output signal 135 that is actually received at the receiver 120 may differ in various ways from the characteristics of the originally transmitted input signal 130. In some aspects, the output signal 135 may alternatively be referred to as output data and/or received data. In some aspects, the receiver 120 may be configured to receive the output signal 135, and decode the received output signal to retrieve the original data, outputting the decoded signal as output 140. In some aspects, the output 140 may match the input data 125.
In a wide variety of environments, the particular characteristics of the wireless channel 115 can drive a number of configuration choices for the wireless communication channel. For example, the transmitter 110 and/or receiver 120 may be configured to use different communication parameters depending on the noise level of the wireless channel 115, impulse and frequency response of the wireless channel 115, and the like (e.g., to use more robust parameters in some aspects, or to use less robust parameters that provide higher throughput in others). In conventional systems, this is often a largely manual, imprecise, static, and/or intermittent process, involving significant effort and often resulting in inefficiencies.
As discussed above, some efforts have been made to enable more accurate modeling of the wireless channel 115. Channel models may be able to improve the communications, if such channel models can be used to reliably, accurately, and quickly predict the characteristics of the output signal 135. However, as discussed above, conventional models generally fail to account for various aspects of the channel (such as nonlinearity), and are generally too slow to be used in real time transmissions. Further, conventional techniques generally cannot be performed on-device (e.g., on a user equipment, such as a smartphone).
In aspects of the present disclosure, a channel model 145 is constructed, using a GAN, to represent the wireless channel 115. In some aspects, the channel model 145 is generated and/or used by a simulation system 142, which may or may not be the same system that trained the underlying GAN. Though depicted as a discrete component for conceptual clarity, in some aspects, the simulation system 142 can generally be implemented using a variety of devices or components, including on the transmitter 110, on the receiver 120, on a third device, in the cloud, and the like.
Generally, the channel model 145 is generated by processing some latent input (e.g., a probability distribution) with a trained generator, as discussed in more detail below. In some aspects, the generator is conditioned using antenna indices (e.g., using each pair of receiving and transmitting antennas), enabling fine-grained representation of MIMO channels.
In aspects, rather than explicitly learning input-output relationships between input signal 130 and output signal 135, the channel model 145 is generated based on learned implicit relations. That is, rather than explicitly modeling the input-output relationship for a given wireless system, the model implicitly models the distribution of stochastic channel effects using a generator, enabling the simulation system 142 to generalize in that it can accurately predict output data even when the configurations of the communications system differ. Generally, by using a discriminator network in the GAN, the generator learns to model these distributions. In some aspects, if other approaches were used (such as cross-entropy loss between the simulated data and the true data), then the space may be flattened into a single solution that corresponds to the specific input-output relationship, thereby reducing generalization and adaptability.
The channel model 145 can generally be created and used rapidly and efficiently, enabling real time (or near real time) predictions to be generated for the input signal 130. In aspects, the channel model 145 may be deployed on the transmitter 110, on the receiver 120, on a third device (e.g., in the cloud), or on multiple devices. As illustrated, the input signal 130 can be processed using the channel model 145 to yield simulated output signal 150 (labeled “y”). In some aspects, this simulated output signal 150 may alternatively be referred to as simulated or predicted output data, or predicted or simulated received data.
In some aspects, the channel model 145 can model the channel as ŷi=Σj=1N
In an aspect, the simulated output signal 150 generally exhibits the same or similar statistics and characteristics as the output signal 135. In this way, the simulated output signal can be used to drive a variety of configuration decisions for the transmitter 110 and/or receiver 120. For example, the channel model 145 may be used to forecast communication outages or disruptions (e.g., if characteristics of the simulated output signal 150 indicate such disruptions).
Similarly, based on the simulated output signal 150, the transmitter 110 may be reconfigured to ensure improved communications (e.g., to use more robust communication parameters when the simulated output signal 150 indicates significant noise, interference, and the like, while using less robust but higher throughput parameters when the simulated output signal 150 indicates that robust parameters are not needed). In some aspects, the configurations of the transmitter 110 and/or receiver 120 can be adjusted to ensure that the simulated output signal 150 (and, therefore, the actual output signal 135) is as similar to the input signal 130 as possible.
In at least one aspect, the channel model 145 can be deployed directly on the transmitter 110 and/or receiver 120 to simulate the wireless channel. In aspects, these and other solutions can be implemented entirely automatically. That is, because the channel model 145 can be used to simulate the wireless channel 115 rapidly and with little computing resources (e.g., taking less than one millisecond per OFDM symbol in a MIMO signal), the channel model can be used to simulate the channel in near real time, enabling significantly improved automated adjustment of the communication parameters.
The illustrated workflow 200 may be used to train a GAN comprising a generator 220 and a discriminator 250. In some aspects, the generator 220 and discriminator 250 each correspond to neural networks. In at least one aspect, the generator 220 corresponds to a multilayer perceptron (MLP) with one or more hidden layers and a nonlinear (e.g., ReLU) activation. In one aspect, the discriminator 250 can similarly be implemented as an MLP with one or more hidden layers and a nonlinear activation.
Generally, the generator component of a GAN can be trained to receive some latent input (e.g., a random vector) and generate some corresponding output that simulates or approximates the target used during training. Stated differently, the generator may be trained to capture the distribution p(x) of some observed data {xi}i=1N, allowing the generator to be used to sample new data points from the distribution. This training may be achieved by leveraging two distinct machine learning models: a generator G: zx that transforms an input z (e.g., a random noise vector drawn from a defined distribution) to a sample x (e.g., generator 220), as well as a discriminator D: x[0,1] that predicts whether a given sample was generated by G (e.g., that the sample is simulated or fake), or is a sample from the target distribution (e.g., that the sample is a real ground truth sample) (e.g., discriminator 250). The generator 220 and discriminator 250 can generally be trained simultaneously using a min-max objective, discussed in more detail below.
In some examples, the generator 220 can also be conditioned using other input, constraining the generated output based on this condition. In the illustrated example, the generator 220 is trained to generate a channel model 245 (which may correspond to the channel model 145 of
In some aspects, the channel model 245 is defined using a multidimensional tensor, where one dimension (e.g., the width) corresponds to the transmitting elements (e.g., a column for each transmitting antenna), a second dimension (e.g., the height) corresponds to the receiving elements (e.g., a row for each receiving element), and a third dimension (e.g., the depth) corresponds to the link characteristics (e.g., the channel response filter) of each transmitting and receiving antenna pair.
For example, in at least one aspect, the channel model 245 is defined as a three-dimensional tensor H(τ) below, where each element hi,j(τ) is a time-varying complex one-dimensional signal or vector that varies with time r (e.g., time steps based on the time of flight of the signal), and represents the per-link channel response filter between the j-th transmitting antenna and i-th receiving antenna. In some aspects, hi,j(τ) is discretized and represented as a k-dimensional complex vector. Additionally, in the example below, NT represents the number of transmitting antennas, and NR represents the number of receiving antennas.
In the workflow 200, the generator 220 is conditioned based on a set of antenna indices 210. Generally, by providing different antenna indices 210, the generator 220 is conditioned to output a portion of the channel model 245 that corresponds to that transmission pathway. For example, if indices (i,j) are provided, then the generator 220 may generate hi,j reflecting the effect of the wireless channel between the j-th transmitting antenna and i-th receiving antenna. In some aspects, these indices can be iteratively specified to generate each corresponding element hi,j in the channel model 245 (sequentially or in parallel).
As illustrated, the antenna indices 210 may first be transformed via an embedding 215 from a set of integers into a vector or tensor before being input to the generator 220. For example, the conditioning coordinates (antenna indices), which may be given as one-hot encodings, can be embedded into a D-dimensional space using a linear neural layer. In an aspect, D is a hyperparameter set by an administrator (e.g., to a value of four in some aspects).
In some aspects of the present disclosure, this conditional generation of channel links based on the embedded link-level (antenna index) information can improve the resulting channel model 245 in a number of ways. For example, as the parameters of the generator 220 are shared for the generation of channels hi,j across all links (i,j), the network is encouraged to learn and exploit correlations between the links. Further, as the input (D-dimensional vectors) and output space (channels hi,j) remains fixed for different MIMO configurations, there is improved parameter efficiency, as the number of parameters in the generator 220 does not change or increase as the number of links change. For example, even in the case of massive MIMO (with a large number of links), conventional systems would use significantly more parameters, not only increasing the latency of using the generator during inferencing, but also rendering training difficult or impossible through significant computational expense. In contrast, the present disclosure can use a significantly smaller number of parameters. Additionally, the same generator 220 can readily be used for different configurations of the transmitter and/or receiver devices.
In some aspects, the channel model 245 can be regenerated (e.g., using a newly sampled latent input 205) using a variety of criteria. That is, a channel model 245 may be generated and used to simulate output data for multiple sets of input data. For example, in some aspects, the simulation system can periodically generate a new channel model 245 by providing a new latent input 205 to the generator 220 (e.g., hourly, daily, and the like). In some aspects, a new channel model 245 can be generated whenever the configuration of the transmitter and/or receiver of the wireless system changes. Similarly, in some aspects, a new channel model 245 can be generated when it is determined that the conditions or characteristics of the wireless channel 115 have changed (e.g., when it is determined that the simulated data is not similar to the actual output data).
As illustrated, a set of input data 225 (e.g., data input to a wireless channel, such as wireless channel 115) can be processed using the channel model 245 to generate the simulated output data 230 (which approximates the actual output data 235 that is output from the wireless channel 115 and received at a receiver). In some aspects, this processing involves convolving the input data 225 with the channel model 245 to generate the simulated output data 230.
In some aspects, the input data 225 may be defined as x=[x1, . . . , xT
As illustrated, the simulated output data 230 and/or ground truth output data 235 may be processed using the discriminator 250 to generate a classification 255, conditioned on a receiving antenna index 240 (referred to in some aspects as an antenna coordinate). In some aspects, as discussed below in more detail, the simulated output data 230 and/or output data 235 may be supplemented using auto-correlations to introduce global information to the discriminator.
Generally, the discriminator 250 can be used to encourage the generator 220 to produce realistic channel samples (e.g., simulated output data 230) ŷ∈N
In the illustrated example, in a similar manner to the generator 220, the simulation system can also provide conditional information to the discriminator 250 in the form of embeddings of receiver antenna indices 240, embedded via embedding 247 (e.g., using a linear layer). As a result, the discriminator 250 can learn to discriminate between real and simulated samples of output waveforms y, ŷ∈∈T
In some aspects, the discriminator 250 (in a similar manner as the conditional channel generation using generator 220) is spatially conditioned, and can beneficially be used to evaluate data in different MIMO configurations, while the number of parameters in the discriminator 250 remains constant.
In an aspect, to further complement the local (receiver antenna-specific) information observed in the samples (embedded via the conditioning antenna index 240), the simulation system can additionally introduce global information to the discriminator (across all receiving antennas) using an auto-correlation in the form of receiver-side spatial correlations yHy∈∈N
As discussed above, the resulting classification 255 generally classifies the received data as real (e.g., output data 235) or simulated (e.g., simulated output data 230), allowing the generator 220 to be refined to generate more accurate simulated data (via more accurate channel models), while the discriminator simultaneously learns to make more accurate classifications.
In at least one aspect, the generator 220 and discriminator 250 are trained simultaneously using a min-max objective defined in Equation 1 below, where L is the training loss used to refine the generator 220 and discriminator 250, y and z are the expected value of random variables y and z, respectively drawn from probability distributions pdata (e.g., a real data distribution, comprising of collected measurements) and p(z), respectively. Further, x is the input data 225, y is the output data 235, His the channel model 245, D(⋅) represents application of the discriminator 250, z is the latent input 205 (e.g., a random vector sampled from a distribution), p(z) is the Gaussian noise prior discussed above, ŷ is the simulated output data 230, and G(⋅) represents application of the generator 220.
In at least one aspect, the min-max objective used to train the generator and discriminator networks is defined using Equation 2 below, where L is the training loss used to refine the generator 220 and discriminator 250, ŷ, y, and {tilde over (y)} are the expected value of random variables ŷ, y, and {tilde over (y)}, respectively drawn from probability distributions pg (e.g., a distribution of simulated measurements given real input data), pdata (e.g., a real data distribution, comprising of collected measurements), and p{tilde over (y)} (e.g., a distribution of {tilde over (y)}), respectively. In Equation 2, y is an interpolation between real samples y (e.g., output data) and simulated samples y (e.g., simulated output data 230) according to {tilde over (y)}=∈y+(1−∈)ŷ, where E is sampled from a uniform distribution Unif according to ∈˜Unif [0,1]. Further, in Equation 2, x is the input data 225, y is the output data 235, H is the channel model 245, D(⋅) represents application of the discriminator 250, ∇{tilde over (y)} is the gradient operation with respect to {tilde over (y)}, and λ is the weight or gradient penalty co-efficient, which may be a hyperparameter (e.g., set to a value of 10).
By using the workflow 200, the GAN (e.g., the generator 220 and discriminator 250) can be iteratively trained using sets of wireless measurements (e.g., using a set of input data and a corresponding set of output data). In this way, the generator 220 learns to generate channel models that can be efficiently and rapidly used to simulate the wireless channel.
In some aspects, the simulation system operates on the transmitting device. In others, the simulation system can operate on the receiving device. Additionally, in some aspects each device can serve as both transmitter and receiver, enabling bidirectional communications. In at least one aspect, the simulation system can define some “pilot” input data to be used as ground truth input data for the training workflow 200. This can allow each system to use the defined input data, in conjunction with the system's received output data 235, to perform the workflow 200.
As illustrated, in a similar manner to the workflow 200, the generator 320 is configured to receive a latent input 305 (e.g., sampled from a Gaussian distribution) to generate a channel model 345. Further, as discussed above, the output of the generator 320 is conditioned using antenna pairs (e.g., (i,j) pairs, corresponding to a receiving antenna and transmitting antenna, respectively). This can allow the generator 320 to iteratively (in parallel or sequentially) generate each element of the channel model 345 (where each element indicates the channel response for the given link between the j-th and i-th antennas).
In some aspects, the workflow 300 uses the same latent input 305 (e.g., the same random vector sampled from the distribution) to generate all of the elements of the channel model 345. Upon various criteria, the simulation system may sample a new latent input 305 to generate a new channel model 345. For example, as discussed above, the simulation system may periodically regenerate the channel model 345 using new latent input 305, or may do so upon the existence or occurrence of other defined criteria, such as a change in the transmitter or receiver configurations, upon determining that the simulated data no longer aligns with the actual received data, and the like.
In some aspects, the simulation system may learn or select the latent input 305 in order to compactly represent the channel state information, which can aid channel reconstruction. That is, in at least one aspect, the simulation system may seek to identify a value for the latent input that leads to an optimal channel model, rather than randomly generating the latent input 305. For example, the simulation system may determine
where z* is a sample from the distribution z and corresponds to a vector that minimizes the differences between the actual output data y and the simulated output data (given as x*H(z)), which is generated by convolving input data x with the channel model H(z). In some aspects, this determined value z* can be used to adapt future input data to improve reliability of the communications. For example, z* may be a real-valued vector that can encode information relating to certain frequencies (e.g., sub-carriers) to avoid when transmitting data in the channel.
Similarly, in at least one aspect, the simulation system may rapidly build channel models 345 to run fast evaluations on the data, in an effort to fine-tune the transmitter and/or receiver parameters (e.g., to down select the configuration parameters). For example, using these fast evaluations, the transmitting system may make various transmission choices prior to transmitting the input data 325 (such as choosing a modulation technique to encode the data, a number of the frequency subcarriers to use, and the like).
In the illustrated workflow 300, using the generated channel model 345, the simulation system can transform the input data 325 (e.g., data transmitted into a wireless channel) into simulated output data 330 (e.g., data received from the wireless channel by a receiver), as discussed above. For example, the input data 325 may be convolved with the channel model 345 to yield the simulated output data 330. As discussed above, this simulated output data 330 can be used for a variety of purposes.
In some aspects, rather than being used to simulate output data, the generator 320 can be used to improve operations of the communication systems, enabling fine-tuning of site-specific aspects of the deployment. For example, as discussed above, the model (or z*) may be used to forecast outages or identify problematic subcarriers at the site where the wireless system is deployed.
Moreover, in the illustrated aspect, the discriminator (not depicted in
Similarly, in some aspects, the discriminator can be used to extract features of waveforms (e.g., by using the intermediate features in the penultimate layer of the discriminator). These features can then be used to perform a variety of other tasks, such as out-of-distribution (OOD) classification. In some aspects, particularly for novel tasks for which training data is limited, converting the input data to informative features can be used to significantly improve model performance.
At block 405, the simulation system receives wireless data (e.g., a set of wireless measurements). For example, the wireless data may include input data for a wireless channel (e.g., data that is transmitted, by a transmitter, into the wireless channel) and corresponding output data from the channel (e.g., data that is received, by a receiver, from the wireless channel).
At block 410, the simulation system generates a channel model (e.g., channel model 145 of
At block 415, the simulation system generates simulated output data using the channel model. For example, as discussed above, the simulation system may convolve the input data with the channel model in order to generate the simulated data. In some aspects, during the training, this simulated output data may differ substantially from the actual output data. For example, the generator network may be initialized with random weights (or with weights pre-trained by one or more other systems), which may result in an output channel model that does not approximate the underlying channel well. However, during training, the generator (and therefore, the resulting channel model) is iteratively improved.
At block 420, the simulation system processes the actual output data, and/or the simulated output data, with a discriminator network (e.g., discriminator 250 of
At block 425, the simulation system computes a loss based on the discriminator output. In some aspects, as discussed above, the simulation system can compute a min-max loss to jointly train the generator network and discriminator network simultaneously. In at least one aspect, the simulation system uses Equation 1, above, to define the loss.
At block 430, the simulation system can then refine both the generator and discriminator based on this computed loss. Although the illustrated example suggests refining the generator and discriminator individually for each sample of wireless data (e.g., using stochastic gradient descent) for conceptual clarity, in aspects, the simulation system may refine the models based on batches of multiple samples (e.g., using a batch gradient descent).
At block 435, the simulation system determines whether training is complete. In various aspects, this determination may be made based on a wide variety of termination criteria. For example, in one aspect, the simulation system can determine whether additional training data remains to be processed. If so, then training is not complete. In another aspect, the simulation system can determine whether a defined amount of time, a defined amount of computing resources, a defined number of training cycles or epochs, and the like have elapsed. In at least one aspect, the simulation system can determine whether the discriminator's accuracy is within a defined threshold or range from 50% (e.g., indicating that the channel model is sufficiently accurate and the discriminator is effectively randomly guessing whether the output is real or simulated).
If training is not complete, then the method 400 returns to block 405. In some aspects, the simulation system can generate a new channel model for each training round. That is, after the generator is refined during a given training cycle, the generator can be used to generate a new channel model (based on the same latent input, or a new randomly sampled input at block 410).
If training has terminated, then the method 400 continues to block 440, where the simulation system deploys the generator model (e.g., locally, to the transmitter, and the like). As discussed above, the generator can be used to efficiently generate channel models, which can, in turn, be used to quickly (and with minimal computational expense) simulate the effects of a wireless channel on provided input data.
Note that
At block 505, the simulation system determines a latent input. In some aspects, as discussed above, determining the latent input can include sampling a random vector from a defined distribution, such as a multivariate isometric Gaussian distribution. In at least one aspect, as discussed above, the number of dimensions (and thus the length of the vector) matches the depth of the tensor representing the channel model.
In some aspects, as discussed above, determining the latent input includes identifying a vector z* that can be used to compactly represent the channel state information. As discussed above, this z* can be used in a variety of ways, including as input to another algorithm or model that determines optimal encoding parameters (such as quadrature amplitude modulation (QAM) type), the optimal number of subcarriers to use, frequencies to avoid, and the like. Further, in some aspects, the system may periodically store channel state information in a conventional state to enable future analysis. By instead storing z*, the system may store this information more compactly, thereby improving storage efficiency.
At block 510, the simulation system determines a transmission path or link (e.g., a pair of antennas, including a transmitting antenna and a receiving antenna). As discussed above, in some aspects, the simulation system conditions the output of the generator on these antenna indices, iteratively building up the entire channel model by generating separate vectors indicating the response and characteristics of each link. Generally, determining the transmission path may be performed according to any suitable criteria, as all transmitter/receiver pairs will be similarly selected and processed.
At block 515, the simulation system embeds the indices of the antennas in the selected transmission path. In at least one aspect, as discussed above, this includes mapping the indices (e.g., in a one-hot vector) to a vector space that matches the dimensionality of the model (e.g., using a linear neural network layer).
At block 520, the simulation system generates a portion of the channel model (e.g., one hi,j element, as discussed above) based on the latent input (determined at block 505) and the embedded indices. As discussed above, the simulation system may do so by seeding the generator network using the latent input, conditioned on the embedded indices.
At block 525, the simulation system determines whether there is at least one additional transmission path or link remaining in the wireless channel. If so, then the method 500 returns to block 510. In the illustrated example, the same latent input is used to generate each element of the channel model. In some aspects, the simulation system may resample latent input (or otherwise determine a new latent input) for each transmission path.
Although the illustrated example depicts a sequential process (processing each link iteratively) for conceptual clarity, in some aspects, the simulation system can process some or all of the antenna pairs (e.g., all of the elements in the channel model) substantially simultaneously (e.g., in parallel). If the simulation system has iterated through all transmission paths, then the method 500 continues to block 530.
At block 530, the simulation system deploys the channel model for use (e.g., locally, on a transmitter, and the like). In some aspects, as discussed above, this use includes combining transmitted input data using the model (e.g., using convolution) to generate simulated output data, which can be used for a variety of purposes. In at least one aspect, as discussed above, the simulation system can deploy the model to improve the communications of a wireless system.
Note that
At block 605, the simulation system receives or selects output signal data for classification. As discussed above, this output signal may correspond to real signal data (e.g., data received at a receiver after transmission in a wireless channel) or simulated signal data.
At block 610, the simulation system selects a receiving antenna in the wireless system for which classifications are being generated. As discussed above, in some aspects, the discriminator can be conditioned using the index of the receiving antenna, enabling improved spatial awareness.
At block 615, the simulation system embeds the index of the selected antenna, as discussed above (e.g., using a linear layer of a network).
At block 620, the simulation system processes a set of output signal data (which may be real or ground-truth data, or simulated data), conditioned on the selected antenna, using the discriminator. In some aspects, as discussed above, the simulation system can also include auto-correlation (e.g., yHy) along with the output signal, in order to provide enhanced global awareness, of the other links in the wireless channel, for the discriminator (e.g., how each link interacts with each other link).
At block 625, the simulation system can determine whether one or more additional receiving antennas exist in the wireless system. If so, then the method 600 returns to block 610 to select another antenna. Although the illustrated example depicts a sequential operation (processing each receiving antenna separately) for conceptual clarity, in some aspects, the simulation system can process some or all of the antennas substantially simultaneously (e.g., in parallel).
If no additional receiving antennas remain, then the method 600 continues to block 630, where the simulation system generates a classification for the output data based on the processing (performed at block 620) for each antenna. As discussed above, this classification can be used to refine the generator and the discriminator.
Note that
At block 705, the simulation system generates a channel model using a trained generator, as discussed above. For example, using the method 500 of
At block 710, the simulation system receives input data. In an aspect, as discussed above, the input data may generally correspond to data (e.g., a set of bits) that have been, are currently being, or will be transmitted along a wireless channel.
At block 715, the simulation system can generate a corresponding simulated output data (e.g., data that approximates what will actually be received at the receiver of the wireless system, which may be modified or transformed based on the characteristics of the channel) by processing the input data using the channel model. For example, as discussed above, the simulation system may convolve the input data and the channel model.
At block 720, the simulation system optionally refines the transmitter parameters and/or the receiver parameters based on this simulated output. For example, in one aspect, if the transmitter and/or received include neural network parameters, then the simulation system can perform gradient descent to fine-tune these parameters with the objective being to minimize the difference between the input and output bits.
Note that
At block 805, a first set of input data for data transmitted, from a transmitter, as a signal in a wireless channel, is received.
At block 810, a channel model is generated for the wireless channel using a generative adversarial network (GAN).
In some aspects, the GAN was trained by: training a generator network to generate the channel model, and training a discriminator network to classify output data as real or simulated.
In some aspects, generating the channel model comprises processing latent input, a transmitting antenna index, and a receiving antenna index using the GAN.
In some aspects, the latent input is sampled from a Gaussian distribution according to z˜N(0, I), wherein: z is the latent input, N(⋅) is the Gaussian distribution, and I is an identity matrix.
In some aspects, the latent input represents channel state information and is determined according to
wherein: z* is the latent input, d(⋅) is a distance function, y is a set of output data, x is a set of input data, and H(z) is the channel model, generated based on a Gaussian distribution z.
In some aspects, the latent input stores the channel state information in a compact manner and can be used to aid channel reconstruction.
In some aspects, the transmitting antenna index and the receiving antenna index are used to condition the channel model, and wherein, prior to generating the channel model, the transmitting antenna index and receiving antenna index are embedded by transforming them to a vector space.
At block 815, a first set of simulated output data is generated by transforming the first set of input data using the channel model.
In some aspects, the method 800 further includes evaluating model consistency by processing the first set of simulated output data using the discriminator network, and upon determining that the model consistency does not meet defined criteria, refraining from using the channel model.
In some aspects, generating the first set of simulated output data comprises convolving the first set of input data with the channel model.
In some aspects, the method 800 further includes receiving a first set of output data that was received in the wireless channel by a receiver; determining a difference between the first set of simulated output data and the first set of output data; and upon determining that the difference exceeds a defined threshold, using a default configuration for the first transmitter.
Note that
At block 905, a set of wireless measurements corresponding to a wireless signal are received, the set of wireless measurements comprising: a first set of input data for data transmitted as a wireless signal; and a first set of output data for the wireless signal when received.
At block 910, a generative adversarial network (GAN) is trained, based on the set of wireless measurements, to generate a channel model for the wireless signals, wherein the channel model can be used to simulate output data based on input data.
In some aspects, the simulated output data are generated by convolving input data with the channel model.
In some aspects, training the GAN comprises: training a generator network to generate the channel model; and training a discriminator network to classify output data as real or simulated.
In some aspects, the discriminator network is trained to classify the output data conditioned on a receiving antenna index.
In some aspects, training the GAN comprises computing a loss L based on a first set of input data and a first set of output data according to
wherein: is an expected value of a random variable drawn from a probability distribution, x is the first set of input data, y is the first set of output data, H is the channel model, pdata is a data generating distribution, D(⋅) is the discriminator network, z is latent input, p(z) is a Gaussian noise prior, y is simulated output data, and G(⋅) is the generator network.
In some aspects, he generator network is trained to generate the channel model based on a latent input, conditioned based on a transmitting antenna index and a receiving antenna index.
In some aspects, the latent input is sampled from a Gaussian distribution according to z˜N(0, I), wherein: z is the latent input, N(⋅) is the Gaussian distribution, and I is an identity matrix.
In some aspects, the latent input represents channel state information and is determined according to
wherein: z* is the latent input, d(⋅) is a distance function, y is a set of output data, x is a set of input measurements, and H(z) is the channel model, generated based on a Gaussian distribution z.
In some aspects, conditioning the generator network based on the transmitting antenna index and receiving antenna index comprises embedding the transmitting antenna index and receiving antenna index by transforming them to a vector space.
In some aspects, the channel model is defined according to
wherein: H(τ) is the channel model for a τ-th time step, hi,j(τ) is channel characteristics between an i-th receiving antenna and a j-th transmitting antenna for the i-th time step, NT is a number of transmitting antennas, and NR is a number of receiving antennas.
In some aspects, the channel model is used to generate simulated output data according to: ŷ=Σj=1N
Note that
In some aspects, the workflows, techniques, and methods described with reference to
Processing system 1000 includes a central processing unit (CPU) 1002, which in some examples may be a multi-core CPU. Instructions executed at the CPU 1002 may be loaded, for example, from a program memory associated with the CPU 1002 or may be loaded from a memory 1024.
Processing system 1000 also includes additional processing components tailored to specific functions, such as a graphics processing unit (GPU) 1004, a digital signal processor (DSP) 1006, a neural processing unit (NPU) 1008, a multimedia processing unit 1010, and a wireless connectivity component 1012.
An NPU, such as NPU 1008, is generally a specialized circuit configured for implementing control and arithmetic logic for executing machine learning algorithms, such as algorithms for processing artificial neural networks (ANNs), deep neural networks (DNNs), random forests (RFs), and the like. An NPU may sometimes alternatively be referred to as a neural signal processor (NSP), tensor processing units (TPUs), neural network processor (NNP), intelligence processing unit (IPU), vision processing unit (VPU), or graph processing unit.
NPUs, such as NPU 1008, are configured to accelerate the performance of common machine learning tasks, such as image classification, machine translation, object detection, and various other predictive models. In some examples, a plurality of NPUs may be instantiated on a single chip, such as a system on a chip (SoC), while in other examples, the NPUs may be part of a dedicated neural-network accelerator.
NPUs may be optimized for training or inference, or in some cases configured to balance performance between both. For NPUs that are capable of performing both training and inference, the two tasks may still generally be performed independently.
NPUs designed to accelerate training are generally configured to accelerate the optimization of new models, which is a highly compute-intensive operation that involves inputting an existing dataset (often labeled or tagged), iterating over the dataset, and then adjusting model parameters, such as weights and biases, in order to improve model performance. Generally, optimizing based on a wrong prediction involves propagating back through the layers of the model and determining gradients to reduce the prediction error.
NPUs designed to accelerate inference are generally configured to operate on complete models. Such NPUs may thus be configured to input a new piece of data and rapidly process this new piece through an already trained model to generate a model output (e.g., an inference).
In one implementation, NPU 1008 is a part of one or more of CPU 1002, GPU 1004, and/or DSP 1006.
In some examples, wireless connectivity component 1012 may include subcomponents, for example, for third generation (3G) connectivity, fourth generation (4G) connectivity (e.g., 4G LTE), fifth generation connectivity (e.g., 5G or NR), Wi-Fi connectivity, Bluetooth connectivity, and other wireless data transmission standards. Wireless connectivity component 1012 is further connected to one or more antennas 1014.
Processing system 1000 may also include one or more sensor processing units 1016 associated with any manner of sensor, one or more image signal processors (ISPs) 1018 associated with any manner of image sensor, and/or a navigation processor 1020, which may include satellite-based positioning system components (e.g., GPS or GLONASS) as well as inertial positioning system components.
Processing system 1000 may also include one or more input and/or output devices 1022, such as screens, touch-sensitive surfaces (including touch-sensitive displays), physical buttons, speakers, microphones, and the like.
In some examples, one or more of the processors of processing system 1000 may be based on an ARM or RISC-V instruction set.
Processing system 1000 also includes memory 1024, which is representative of one or more static and/or dynamic memories, such as a dynamic random access memory, a flash-based static memory, and the like. In this example, memory 1024 includes computer-executable components, which may be executed by one or more of the aforementioned processors of processing system 1000.
In particular, in this example, memory 1024 includes a generator component 1024A (which may correspond to the generator 220 in
Processing system 1000 further comprises generator circuit 1026, discriminator circuit 1027, configuration circuit 1028, training circuit 1029, and inference circuit 1030. The depicted circuits, and others not depicted, may be configured to perform various aspects of the techniques described herein.
For example, generator component 1024A and generator circuit 1026 may be used to generate channel models based on latent input conditioned by antenna embeddings, as discussed above. Discriminator component 1024B and discriminator circuit 1027 may be used to classify data as real or simulated in order to aid training of the models, as discussed above. Configuration component 1024C and configuration circuit 1028 may be used to may be used to modify the transmission parameters of the transmitter and/or receiver based on the simulated data, the generator, and/or the discriminator, as discussed above. Training component 1024D and training circuit 1029 may be used to train, refine, and/or fine-tune the models (e.g., using the workflow 200 in
Though depicted as separate components and circuits for clarity in
Generally, processing system 1000 and/or components thereof may be configured to perform the methods described herein.
Notably, in other aspects, aspects of processing system 1000 may be omitted, such as where processing system 1000 is a server computer or the like. For example, multimedia processing unit 1010, wireless connectivity component 1012, sensor processing units 1016, ISPs 1018, and/or navigation processor 1020 may be omitted in other aspects. Further, aspects of processing system 1000 maybe distributed between multiple devices.
Clause 1: A method of generating simulated output data, comprising: receiving a first set of input data for data transmitted, from a transmitter, as a signal in a wireless channel; generating a channel model for the wireless channel using a generative adversarial network (GAN); and generating a first set of simulated output data by transforming the first set of input data using the channel model.
Clause 2: The method according to Clause 1, wherein the GAN was trained by: training a generator network to generate the channel model; and training a discriminator network to classify output data as real or simulated.
Clause 3: The method according to Clause 1 or 2, further comprising: evaluating model consistency by processing the first set of simulated output data using the discriminator network; and upon determining that the model consistency does not meet defined criteria, refraining from using the channel model.
Clause 4: The method according to any of Clauses 1-3, wherein generating the channel model comprises processing latent input, a transmitting antenna index, and a receiving antenna index using the GAN.
Clause 5: The method according to any of Clauses 1-4, wherein the latent input is sampled from a Gaussian distribution according to z˜N(0, I), wherein: z is the latent input, N(⋅) is the Gaussian distribution, and I is an identity matrix.
Clause 6: The method according to any of Clauses 1-5, herein the latent input represents channel state information and is determined according to
wherein: z* is the latent input, d(⋅) is a distance function, y is a set of output data, x is a set of input data, and H(z) is the channel model, generated based on a Gaussian distribution z.
Clause 7: The method according to any of Clauses 1-6, herein the latent input stores the channel state information in a compact manner and can be used to aid channel reconstruction.
Clause 8: The method according to any of Clauses 1-7, wherein the transmitting antenna index and the receiving antenna index are used to condition the channel model, and wherein, prior to generating the channel model, the transmitting antenna index and receiving antenna index are embedded by transforming them to a vector space.
Clause 9: The method according to any of Clauses 1-8, wherein generating the first set of simulated output data comprises convolving the first set of input data with the channel model.
Clause 10: The method according to any of Clauses 1-9, further comprising modifying one or more transmission parameters of the transmitter based on the first set of simulated output data.
Clause 11: The method according to any of Clauses 1-10, further comprising: receiving a first set of output data that was received in the wireless channel by a receiver; determining a difference between the first set of simulated output data and the first set of output data; and upon determining that the difference exceeds a defined threshold, using a default configuration for the first transmitter.
Clause 12: A method of training a channel model, comprising: receiving a set of wireless measurements corresponding to a wireless signal, comprising: a first set of input data for data transmitted as a wireless signal; and a first set of output data for the wireless signal when received; and training a generative adversarial network (GAN), based on the set of wireless measurements, to generate a channel model for the wireless signals, wherein the channel model can be used to simulate output data based on input data.
Clause 13: The method according to Clause 12, wherein the simulated output data are generated by convolving input data with the channel model.
Clause 14: The method according to Clause 12 or 13, wherein training the GAN comprises: training a generator network to generate the channel model; and training a discriminator network to classify output data as real or simulated.
Clause 15: The method according to any of Clauses 12-14, wherein the discriminator network is trained to classify the output data conditioned on a receiving antenna index.
Clause 16: The method according to any of Clauses 12-15, wherein training the GAN comprises computing a loss L based on a first set of input data and a first set of output data according to
wherein: is an expected value of a random variable drawn from a probability distribution, x is the first set of input data, y is the first set of output data, H is the channel model, pdata is a data generating distribution, D(⋅) is the discriminator network, z is latent input, p(z) is a Gaussian noise prior, y is simulated output data, and G(⋅) is the generator network.
Clause 17: The method according to any of Clauses 12-16, herein the generator network is trained to generate the channel model based on a latent input, conditioned based on a transmitting antenna index and a receiving antenna index.
Clause 18: The method according to any of Clauses 12-17, wherein the latent input is sampled from a Gaussian distribution according to z˜N(0, I), wherein: z is the latent input, N(⋅) is the Gaussian distribution, and I is an identity matrix.
Clause 19: The method according to any of Clauses 12-18, wherein the latent input represents channel state information and is determined according to
wherein: z* is the latent input, d(⋅) is a distance function, y is a set of output data, x is a set of input measurements, and H(z) is the channel model, generated based on a Gaussian distribution z.
Clause 20: The method according to any of Clauses 12-19, wherein conditioning the generator network based on the transmitting antenna index and receiving antenna index comprises embedding the transmitting antenna index and receiving antenna index by transforming them to a vector space.
Clause 21: The method according to any of Clauses 12-20, wherein the channel model is defined according to
wherein: H(τ) is the channel model for a τ-th time step, hi,j(τ) is channel characteristics between an i-th receiving antenna and a j-th transmitting antenna for the T-th time step, NT is a number of transmitting antennas, and NR is a number of receiving antennas.
Clause 22: The method according to any of Clauses 12-21, wherein the channel model is used to generate simulated output data according to: ŷi=Σj=1N
Clause 23: A system, comprising: a memory comprising computer-executable instructions; and one or more processors configured to execute the computer-executable instructions and cause the processing system to perform a method in accordance with any of Clauses 1-22.
Clause 24: A system, comprising means for performing a method in accordance with any of Clauses 1-22.
Clause 25: A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by one or more processors of a processing system, cause the processing system to perform a method in accordance with any of Clauses 1-22.
Clause 26: A computer program product embodied on a computer-readable storage medium comprising code for performing a method in accordance with any of Clauses 1-22.
The preceding description is provided to enable any person skilled in the art to practice the various aspects described herein. The examples discussed herein are not limiting of the scope, applicability, or aspects set forth in the claims. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. For example, changes may be made in the function and arrangement of elements discussed without departing from the scope of the disclosure. Various examples may omit, substitute, or add various procedures or components as appropriate. For instance, the methods described may be performed in an order different from that described, and various steps may be added, omitted, or combined. Also, features described with respect to some examples may be combined in some other examples. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the disclosure is intended to cover such an apparatus or method that is practiced using other structure, functionality, or structure and functionality in addition to, or other than, the various aspects of the disclosure set forth herein. It should be understood that any aspect of the disclosure disclosed herein may be embodied by one or more elements of a claim.
As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
As used herein, a phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c).
As used herein, the term “determining” encompasses a wide variety of actions. For example, “determining” may include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining, and the like. Also, “determining” may include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), and the like. Also, “determining” may include resolving, selecting, choosing, establishing, and the like.
As used herein, the term “connected to”, in the context of sharing electronic signals and data between the elements described herein, may generally mean in data communication between the respective elements that are connected to each other. In some cases, elements may be directly connected to each other, such as via one or more conductive traces, lines, or other conductive carriers capable of carrying signals and/or data between the respective elements that are directly connected to each other. In other cases, elements may be indirectly connected to each other, such as via one or more data busses or similar shared circuitry and/or integrated circuit elements for communicating signals and data between the respective elements that are indirectly connected to each other.
The methods disclosed herein comprise one or more steps or actions for achieving the methods. The method steps and/or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and/or use of specific steps and/or actions may be modified without departing from the scope of the claims. Further, the various operations of methods described above may be performed by any suitable means capable of performing the corresponding functions. The means may include various hardware and/or software component(s) and/or module(s), including, but not limited to a circuit, an application specific integrated circuit (ASIC), or processor. Generally, where there are operations illustrated in figures, those operations may have corresponding counterpart means-plus-function components with similar numbering.
The following claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language of the claims. Within a claim, reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. No claim element is to be construed under the provisions of 35 U.S.C. § 112(f) unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.” All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims.
This Application claims the benefit of and priority to U.S. Provisional Patent Application No. 63/278,898, filed on Nov. 12, 2021, the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63278898 | Nov 2021 | US |