GENERATION OF PERSONALIZED RECOMMENDATIONS
20230021233 · 2023-01-19
Inventors
- Muhammad AMMAD-UD-DIN (Helsinki, FI)
- Suleiman ALI KHAN (Helsinki, FI)
- Adrian FLANAGAN (Helsinki, FI)
- Kuan Eeik TAN (Helsinki, FI)
Cpc classification
G06Q30/0201
PHYSICS
G06F16/9536
PHYSICS
International classification
Abstract
There is provided a client adapted for generating personalized cold-start federated recommendations for a user of the client. The client generates personalized recommendations for three cold-start scenarios, namely i) recommendation of an item to a new user which does not have any history of user-item interactions, ii) recommendation of a new item to a set of the most prospective users where the item has no history, and iii) recommendation of a new item to a new user, where there is no history associated with either the user or the item. The client uses a federated multi-view matrix factorization method to generate cold-start recommendations without transferring users' personal data to a remote server. Further, a server and a content provider for assisting in generating the personalized cold-start recommendations are provided in a federated set-up according to some aspects.
Claims
1. A client adapted for generating personalized recommendations of a new item for a user of the client, the client being configured to: retrieve a local data set x stored on the client, wherein the client being connectable to a server comprising master model matrices Q, U for distribution to a plurality of clients for generating personalized item recommendations, wherein the personalized item recommendations are generated using a joint model of integrated multiple data views comprising a user-item interaction matrix R=PQ.sup.T, a user data matrix X=UP.sup.T, and an item data matrix Y=QV.sup.T, wherein the matrices Q, V comprise latent variables relating to item meta data and the matrices P, U comprise latent variables relating to user personal data; obtain an updated master model matrix Q.sub.v* from the server, the master model matrix Q being updated to be the updated master model matrix Q.sub.v* in response to a new item; update a local model P based on the updated master model matrix Q.sub.v* and the local data set x; and generate a personalized recommendation for the new item for the user of the client using the local model P and the updated master model matrix Q.sub.v*.
2. The client of claim 1, further configured to: obtain the master model matrices Q, U from the server; and update the local model P based on the master model matrices Q, U and the local data set x.
3. The client of claim 2, further configured to: calculate gradient matrices dq.sub.x, du.sub.x of the master model matrices Q, U based on the local data set x and the local model P; transmit the gradient matrices dq.sub.x, du.sub.x to the server for enabling the server to generate aggregated gradient matrices dq, du based on gradient matrices received from the plurality of clients and/or at least one content provider, the aggregated gradient matrices dq, du enabling updating the master model matrices Q, U by the server; obtain updated master model matrices Q, U from the server; and update the local model P based on the updated master model matrices Q, U and the local data set x.
4. A client adapted for generating personalized item recommendations for a new user of the client, the client being configured to: retrieve a local data set x associated with the new user stored on the client, wherein the client being connectable to a server comprising master model matrices Q, U for distribution to a plurality of clients for generating personalized item recommendations, wherein the personalized item recommendations are generated using a joint model of integrated multiple data views comprising a user-item interaction matrix R=PQ.sup.T, a user data matrix X=UP.sup.T, and an item data matrix Y=QV.sup.T, wherein the matrices Q, V comprise latent variables relating to item meta data and the matrices P, U comprise latent variables relating to user personal data; obtain the master model matrices Q, U from the server; generate a local model P.sub.x* using the local data set x and the master model matrix U; and generate a personalized item recommendation for the new user of the client using the local model P.sub.x* and the master model matrix Q.
5. A client adapted for generating personalized recommendations of a new item for a new user of the client, the client being configured to: retrieve a local data set x associated with the new user stored on the client (307), wherein the client being connectable to a server comprising master model matrices Q, U for distribution to a plurality of clients for generating personalized item recommendations, wherein the personalized item recommendations are generated using a joint model of integrated multiple data views comprising a user-item interaction matrix R=PQ.sup.T, a user data matrix X=UP.sup.T, and an item data matrix Y=QV.sup.T, wherein the matrices Q, V comprise latent variables relating to item meta data and the matrices P, U comprise latent variables relating to user personal data; obtain the master model matrices Q.sub.v*, U from the server, the master model matrix Q being updated to be the master model matrix Q.sub.v* in response to the new item; generate a local model P.sub.x* using the local data set x and the master model matrix U; and generate a personalized item recommendation for the new user of the client using the local model P.sub.x* and the master model matrix Q.sub.v*.
6. The client of claim 5, wherein the local data set x stored on the client comprises data associated with at least one of a user of the client or a device associated with the user.
7. The client of claim 6, wherein the data associated with the user comprises at least one of an age, a gender, a location, a device type or demographics of the user.
8. The client of claim 5, wherein the item comprises one of a music piece, a video file, an application, an appliance or a commodity.
9. A system adapted for generating personalized item recommendations for a user of a client, the system comprising a plurality of clients, each client of the plurality of clients being configured to: retrieve a local data set x stored on the client, wherein each client being connectable to a server comprising master model matrices Q, U for distribution to a plurality of clients for generating personalized item recommendations, wherein the personalized item recommendations are generated using a joint model of integrated multiple data views comprising a user-item interaction matrix R=PQT, a user data matrix X=UPT, and an item data matrix Y=QVT, wherein the matrices Q, V comprise latent variables relating to item meta data and the matrices P, U comprise latent variables relating to user personal data; obtain an updated master model matrix Qv* from the server (308), the master model matrix Q being updated in response to a new item; update a local model P based on the updated master model matrix Qv* and the local data set x; and generate a personalized recommendation for the new item for the user (306) of the client using the local model P and the updated master model matrix Qv*; and a server being connectable to the plurality of clients and at least one content provider for assisting in generating personalized item recommendations for a user of a client of the plurality of clients, wherein the at least one content provider being connectable to the server utilizing master model matrices Q, U for assisting in generating the personalized item recommendations for users of the plurality of clients.
10. The system of claim 9, wherein the server being configured to: generate master model matrices Q, U for assisting in generating personalized item recommendations for users of the plurality of clients; transmit the master model matrix Q to the at least one content provider; obtain a gradient matrix dq*.sub.v from the at least one content provider, the gradient matrix dq*.sub.v being obtained in response to a new item obtained by the content provider; update the master model matrix Q to be an updated master model matrix Q.sub.v* based on the gradient matrix dq*.sub.v; and transmit the updated master model matrix Q.sub.v* and the master model matrix U to each client to enable generation of personalized recommendations for the user of the client).
11. The system of claim 9, wherein the server being further configured to: generate master model matrices Q, U for assisting in generating personalized item recommendations for users of the clients; detect a new user; and transmit the master model matrices Q, U to a client of the new user to enable generation of personalized recommendations for the new user.
12. The system of claim 9, wherein the content provider being configured to: obtain the master model matrix Q from the server; update a local model V using an item metadata y stored on the content provider and the master model matrix Q; calculate a gradient matrix dq.sub.v of the master model matrix Q based on the local model V and the item metadata y; transmit the gradient matrix dq.sub.v to the server for aggregating dq.sub.v with other gradient matrices to enable updating the master model matrix Q by the server; receive a new item comprising item metadata y*; update the local model V using the item metadata y*; compute a gradient matrix dq*.sub.v for the master model matrix Q with respect to the updated local model V; and transmit the gradient matrix dq*.sub.v to the server for updating the master model matrix Q.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0051] In the following, examples are described in more detail with reference to the attached figures and drawings, in which:
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
DETAILED DESCRIPTION
[0059] In the following description, reference is made to the accompanying drawings, which form part of the disclosure, and in which are shown, by way of illustration, specific aspects and examples in which the present subject-matter may be placed. It is understood that other aspects may be utilized, and structural or logical changes may be made without departing from the present subject-matter. The following detailed description, therefore, is not to be taken in a limiting sense, as the present subject-matter is defined in the appended claims.
[0060] For instance, it is understood that a disclosure in connection with described methods may also hold true for a corresponding devices or systems configured to perform the method and vice versa. For example, if a specific method operation is described, a corresponding device may include a unit or other means to perform the described method operation, even if such unit is not explicitly described or illustrated in the figures. On the other hand, for example, if a specific apparatus is described based on functional units, a corresponding method may include a operation performing the described functionality, even if such operation is not explicitly described or illustrated in the figures. Further, it is understood that the features of the various exemplary aspects described herein may be combined with each other, unless specifically noted otherwise.
[0061] A purpose of the solution is to provide a system enabling a so-called cold-start recommendation in a federal learning mode. In the solution, the cold-start recommendations may be provided by federating a multi-view model. Specifically, the multi-view model may be a multi-view factorization model. Further, the solution aims to provide cold-start recommendations without transferring user's personal data out of the user's own device. The solution presented in this disclosure is abbreviated to CFR, a cold-start federated recommendation system.
[0062] The federated learning model may refer to a distributed machine learning technique which enables model training on a large amount of decentralized data. In federated learning, an algorithm may be trained across multiple decentralized devices and/or servers may hold local data samples without exchanging their data samples, for example, by uploading their data samples to a centralized server. Hence, the multiple devices and/or servers may build a global master model without sharing local data, such as user personal data.
[0063] Cold-start in recommendation systems refers to a situation where a new user and/or a new item enters the system. In the cold-start situation, the recommendation system may not have any history information associated with the new user, for example, about previous user-item interactions. Similarly, there may not be any history information associated to a new item, such as which kind of users have previously liked the item. In addition to the problems associated with the cold-start user and the cold-start item situations, there is also a more problematic recommendation situation, where both a new user and a new item have accessed the system. In the situation, the goal is to identify if the new item should be recommended to the new user, when there is no history associated either with the user or the item.
[0064]
[0065] The CFR system presented in detail from here on may provide a unique federated solution for all of the three cold-start scenarios 1, 2, 3. The CFR may provide recommendations for the different cold-start cases without any of the users' personal data moving out of the users' personal devices by employing the federated learning approach.
[0066] In order to make the cold-start recommendations, the CFR may use multi-view matrix factorization.
[0067] In
R˜PQ.sup.T
X˜UP.sup.T
Y˜QV.sup.T,
where T is a matrix transpose, R˜PQ.sup.T illustrates a collaborative filter and X˜UP.sup.T may be deemed as a personalized regression. The joint model may be utilized by the multi-view federated learning system, CFR, for generating personalized item recommendations for users of clients, as further described in the next sections.
[0068]
[0069] The cold-start recommendations may be provided by federating a multi-view model, such as the multi-view matrix factorization as shown in
[0070] The generation of recommendations may be based on having a machine learning based master model matrices Q, U on the centralized server 300. The master model matrices Q, U may be distributed to each client 304, 305, 306, 307. The clients 304, 305, 306, 307 may retrieve from their memories individual local data sets x associated with the user of each client 304, 305, 306, 307. Each client 304, 305, 306, 307 may comprise a local model P, which is updated based on the obtained master model matrices Q, U and the local data set x. Also, the master model matrices Q, U may be updated locally on each client 304, 305, 306, 307 based on the local data set x stored on the client 304, 305, 306, 307. After updating the local model P, each client 304, 305, 306, 307 may calculate gradient matrices dq.sub.x and du.sub.x of the respective master model matrices Q, U based on the local data set x and the local model P. The gradient matrices dq.sub.x and du.sub.x may comprise updated parameter information of the master model matrices Q, U. The gradient matrices dq.sub.x and du.sub.x may be transferred back to the server 308. At the server 308, the gradient matrices dq.sub.x and du.sub.x may be aggregated across the users, i.e. clients 304, 305, 306, 307, to generate new updated master models Q, U. The aggregate of the gradient matrices may further comprise a gradient matrix dq.sub.v received from the at least one content provider 302. The master model matrices Q, U updated by the server 308 may be transmitted to each client 304, 305, 306, 307 to further update the local model P based on the updated local model matrices Q, U and the local data set x. Each client 304, 305, 306, 307 may then generate a personalized item recommendation for the user of the client using the updated local model P and the updated master model matrix Q. The generation of the personalized item recommendation may be presented as r.sub.1=p.sub.1×Q, wherein the subscript 1 denotes the client 1 among clients 1 . . . N.
[0071] In addition, the clients 304, 305, 306, 307 may obtain an updated master model matrix Q from the server 308 when the master model matrix Q has been updated in response to a new item. Each client 304, 305, 306, 307 may use the updated master model matrix Q.sub.v* associated with the new item and the local data set x to update the local model P. Each client 304, 305, 306, 307 may generate a personalized item recommendation for the user of the client 304, 305, 306, 307 using the local model P and the updated master model matrix Q.sub.v*. Hence, personalized item recommendations may be generated for new items as soon as they are added to the service.
[0072] A new user may enter the system 300, for example, when a new client 305, 307 is coupled with the server 308 or a new user signs up to a service utilizing the system 300 with a client 305, 307 already coupled with the server 308. For generating personalized item recommendations for the new user, the client 305, 307 may retrieve a local data set x associated with the new user stored on the client 305, 307. The client 305, 307 may obtain the master model matrices Q, U from the server 308 in response to the server 308 detecting the new user. A local model P may be generated on the client 305, 307 using the master model matrix U and the local data set x. Further, the personalized item recommendation may be generated for the new user by the client 305, 307 using the local model P and the master model matrix Q. The generation of the personalized item recommendation for the new user may be presented as r.sub.N=p.sub.N×Q, wherein the subscript N denotes a client N.
[0073] The master model matrices Q, U stored locally on the client 304, 305, 306, 307 may use the local data set x for inference. Only parameter updates associated with the user may be transmitted to the server 308. Hence, the local data set x may reside only at the client 304, 305, 306, 307. Therefore, the solution may ensure privacy protection. The local data set x may comprise, for example, data associated with at least one of the user of the client 304, 305, 306, 307 or a device associated with the user.
[0074] The master model matrix Q may be also transmitted to the at least one content provider 302. The at least one content provider 302 may provide items, such as music pieces, video files, applications, appliances, or commodities to the users of the clients 304, 305, 306, 307. The at least one content provider 302 may update its local model V based on item metadata y and the received master model matrix Q. The item metadata y may be stored on the content provider. The item metadata y may comprise a data set of metadata associated with all the items stored on the content provider 302. The content provider 302 may calculate a gradient matrix dq.sub.v of the master model matrix Q based on the local model V and the item metadata y. Further, the content provider 302 may transmit the gradient matrix dq.sub.v to the server 308 for aggregating dq.sub.v with other gradient matrices du.sub.x, dq.sub.x to enable updating the master model matrix Q by the server 308. Further, when a new item is obtained by the content provider 302, the content provider 302 may update the local model V using item metadata y* of the new item. The content provider 302 may then compute a gradient matrix dq*.sub.v of the master model matrix Q with respect to the updated local model V, and transmit the gradient matrix dq*.sub.v to the server 308. The server 308 may then use the gradient matrix dq*.sub.v to update the master model Q. In case of a personalized recommendation for the new item, the generation of personalized item recommendation may be presented as r*=p×q*T, wherein the * denotes the new item and q* comprises the master model Q updated with respect the updated local model V and the item metadata y*. The local model P may be a local model matrix.
[0075] In an embodiment, the server 308 may be configured to detect the new item. For example, the server 308 may have a service which detects whether a new item is added by the content provider 302. Alternatively, when a new item is added, the content provider 302 may itself notify the server 308. In response to detecting the new item, the server 308 may update the master model matrix Q. The server 308 may then transmit the updated master model matrix Q to the at least one content provider 302, for example, to enable further updates of the master model matrix Q based on the item metadata y* of the new item stored on the content provider 302.
[0076] Hence, the system 300 may enable updating the joint model in an iterative manner. The model may be trained continuously or in intervals such that the most accurate recommendations as possible may be provided for new users and items. For example, the server 308 may be configured to update the master model matrices Q, U in a predetermined interval based on the aggregate of gradient matrices du.sub.x, dq.sub.x received from the plurality of clients 304, 305, 306, 307 and the gradient matrix dq.sub.v from the at least one content provider 302. In another example embodiment, the server 308 may be configured to update the master model matrices Q, U continuously based on the aggregate of gradient matrices du.sub.x, dq.sub.x received from the plurality of clients 304, 305, 306, 307 and the gradient matrix dq.sub.v from the at least one content provider 302. The updated master model matrices Q, U may be then transferred by the server 308 to each client 304, 305, 306, 307 for enabling generating personalized item recommendations for the user of the client 304, 305, 306, 307. Further, the updated master model matrix Q may be transferred by the server 308 to the at least one content provider 302 for further assisting in generating the personalized item recommendations.
[0077]
[0078] When the system 300 is initialized, a local model P may be generated on the client 306 at 402. In addition, at 404, master model matrices Q, U may be generated at the server 308. Further, at 406, a local model V may be generated at the content provider 302. The local models P, V and the global master model matrices Q, U may be used to form a multi-view joint model for generating the personalized item recommendations the user 446 of the client 306. For example, each time a new client 306 (the user 446) signs up to a service utilizing the cold-start recommendation system 300, the local model P may be initialized on the client 306 associated with the user 446. The new user 446 may be detected by the server 308 when the client 306 connects with the server 308. In response, the server 308 may transmit parameters of the master model matrices Q, U to the client 306 at 408. Further, the server 308 may transmit parameters of the master model matrix Q to the content provider 302 at 410.
[0079] The master model matrices Q, U may be trained based on parameter gradients dq.sub.x, du.sub.x, dq.sub.v received from the client 306 and the content provider 302 by the server 308, as described next in detail.
[0080] After the client 306 has obtained the master model matrices Q, U from the server 308, and at 414 the client 306 may perform computations to update its local model P. The client 306 may update its local model P based on the master model U and a local data set x retrieved by the client 306 at the operation 412, for example, from its memory. The local data set x may comprise personal data X received from the user 446. The local data x set may comprise data associated with at least one of the user 446 of the client 306 or a device associated with the user 446. The data associated with the user 446 may comprise at least one of an age, a gender, a location, a device type or demographics of the user 446. The client 306 may further calculate gradient matrices dq.sub.x and du.sub.x of the master model matrices Q, U based on the local data set x and the local model P. The client 306 may then transmit at 416 the gradient matrices dq.sub.x, du.sub.x to the server 308.
[0081] At 418, the content provider 302 may perform computations to update its local model V and the master model matrix Q. The content provider 302 may update its local model V based on the received global model matrix Q and item metadata y stored on the content provider 302. Further, at 418, the content provider 302 may compute a gradient matrix dq.sub.v of the master model matrix Q with respect to the local model V. Thereafter, the content provider 302 may proceed to 420 and transmit the gradient matrix dq.sub.x to the server 308 for updating at least the master model matrix Q.
[0082] At 422, the gradient matrices dq.sub.x, du.sub.x, dq.sub.v may be aggregated by the server 308 into gradient matrices du, dq. The aggregated gradient matrices du, dq may further comprise gradient matrices received from a plurality of other clients and other content providers connected to the server 308. The server 308 may use the aggregated gradient matrices dq, du to update the master model matrices Q, U. After updating at 422, the server 308 may transmit at 424 the updated master model matrices Q, U to the client 306. The server 308 may also send at 426 the updated master model matrix Q to the content provider 302.
[0083] The client 306 may use the obtained updated master model matrix Q and the local data set x to further update the local model P. The client 306 may use the improved local model P and the updated master model Q to generate 428 a personalized item recommendation to the user 446 of the client 306. At 430, the client 306 may provide the personalized item recommendation to the user 446.
[0084] In
[0085] At 432, the content provider receives a new item comprising item metadata y*. The item may be, for example, a video file, a piece of music, an application, an appliance or a commodity. The metadata y* may comprise information associated with the item, for example, actors, directors, producers, languages, and other item features. The item metadata y* may be received from a content source 448, which may be, for example, another user or content provider. In response to receiving the new item, the content provider 302 may update the local model V using the item metadata y*. The content provider 302 may generate an updated master model matrix Q* based on the new item metadata y* and the obtained master model matrix Q. Further, the content provider 302 may compute at 434 a gradient matrix dq*.sub.v for the master model matrix Q* with respect to the updated local model V. Thereafter, the content provider 302 may transmit at 436 the gradient matrix dq*.sub.v to the server 308. At 438 the server 308 may update the master model matrix Q based on the gradient matrix dq*.sub.v received from the content provider 302. The server 308 may transmit at 440 the updated master model matrix Q to the client 306. At 442 the client 306 may use the received updated master model matrix Q and the local model P to generate a personalized item recommendation to the user 446 of the client 306. Finally, the client 306 may provide the personalized item recommendation to the user 446 at 444. The recommendations may be provided to the user 446, for example, via a display coupled to the client 306.
[0086]
[0087] The joint model used in generating the personalized item recommendations may be previously trained as illustrated in
[0088] When the new user 512 has, for example, joined a service hosted by the server 308 by using his client 307, the client 307 may retrieve a local data set x* stored on the client at 502. The local data x* set may comprise data associated with at least one of the user 512 of the client 307 or a device associated with the user 512. At 504 a new local model P.sub.x* may be generated by the client device 307 using the local data set x* and an updated master model matrix U. The updated master model matrix U may be the latest version of the master model matrix U available at the server 308 and obtained by the client 307. After an updated master model matrix Q is obtained by the client 307 from the server 308, a personalized item recommendation for the new user 512 may be generated at 508 using the local model P.sub.x* and the updated master model matrix Q. The updated master model matrix Q may be the latest version of the master model matrix Q available at the server 308. At 510, the generated personalized item recommendation may be provided to the new user 512 by the client 307. Hence, the personalized item recommendation may be provided to the new user 512 without having any history information associated with the user 512. Further, no personal data of the user 512 may need to be sent outside the client 307.
[0089]
[0090] The joint model used in generating the personalized item recommendations may be previously trained as illustrated in
[0091] At 612, a new item comprising item metadata y* is received by the content provider 302, for example, from a content source 448. The new item may comprise, for example, one of a music piece, a video file, an application, an appliance or a commodity. The content provider 302 may update a local model V using the item metadata y* at 614. Simultaneously, the content provider 302 may generate an updated version Q* of the master model matrix Q. Further, at 614 the content provider 302 may compute a gradient matrix dq*.sub.v for the master model matrix Q* with respect to the updated local model V. The gradient matrix dq*.sub.v may be transmitted by the content provider 302 at 616 to the server 308 for updating the master model matrix Q.
[0092] After the gradient matrix dq*.sub.v is obtained by the server 308 from the content provider 302, the server 308 may update the master model matrix Q based on the gradient matrix dq*.sub.v at operation 618. At 606 the server 308 may transmit the updated master model matrix Q.sub.v* to the client 307 to enable generation of personalized recommendations of the new item for the new user 512 of the client 307. At 608 the client 307 may generate the personalized item recommendation using the local model PX* and the updated master model matrix Q.sub.v*. At 610, the personalized item recommendation may be provided to the new user 512 of the client 307, for example, via a display.
[0093] The multi-view matrix factorization model may allow predicting recommendations for new users and items, along with supporting traditional warm-start predictions for existing users and items with known history information. The cold-start recommendation tasks associated to generating recommendations for new users and/or new items may not be possible with standard collaborative filter models. The cold-start recommendation tasks may require the side-information sources to be used to predict the recommendations. The systematic integration of the side-information sources, such as the user personal data X as well as the item metadata Y illustrated in
[0094] An advantage of at least some embodiments discussed above compared to the simpler approaches may be the ability to make cold-start recommendations on a user's device without the need to transfer user data back to a centralized server.
[0095]
[0096] The device 700 may further comprise at least one memory 704. The at least one memory 704 may be configured to store, for example, computer program code or the like, for example, operating system software and application software. The at least one memory 704 may comprise one or more volatile memory devices, one or more non-volatile memory devices, and/or a combination thereof. For example, the at least one memory 704 may be embodied as magnetic storage devices (such as hard disk drives, floppy disks, magnetic tapes, etc.), optical magnetic storage devices, or semiconductor memories (such as mask read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash ROM, random access memory (RAM), etc.).
[0097] The device 700 may further comprise a communication interface 708 configured to enable the device 700 to transmit and/or receive information. The communication interface 708 may be configured to provide at least one wireless radio connection, such as a 3GPP mobile broadband connection (e.g. 3G, 4G, 5G). Alternatively, or additionally, the communication interface 208 may be configured to provide one or more other type of connections, for example, a wireless local area network (WLAN) connection such as for example standardized by IEEE 802.11 series or Wi-Fi alliance; a short range wireless network connection, for example, a Bluetooth, NFC near-field communication (NFC), or RFID connection; a wired connection, for example, a local area network (LAN) connection, a universal serial bus (USB) connection, a high-definition multimedia interface (HDMI), or an optical network connection; or a wired Internet connection. The communication interface 708 may comprise, or be configured to be coupled to, at least one antenna to transmit and/or receive radio frequency signals. One or more of the various types of connections may be also implemented as separate communication interfaces, which may be coupled to or configured to be coupled to a plurality of antennas.
[0098] The device 700 may further comprise a user interface 710 comprising or being configured to be coupled to an input device and/or an output device. The input device may take various forms such as for example a keyboard, a touch screen, and/or one or more embedded control buttons. The output device may for example comprise at least one display, speaker, vibration motor, olfactory device, or the like.
[0099] When the device 700 is configured to implement some functionality, some component and/or components of the device 700, for example, the at least one processor and/or the memory, may be configured to implement this functionality. Furthermore, when the at least one processor is configured to implement some functionality, this functionality may be implemented using program code 706 comprised, for example, in the at least one memory 704.
[0100] The functionality described herein may be performed, at least in part, by one or more computer program product components such as software components. According to an embodiment, the device 700 comprises a processor or processor circuitry, such as for example a microcontroller, configured by the program code, when executed, to execute the embodiments of the operations and functionality described herein. Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), application-specific Integrated Circuits (ASICs), application-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), Graphics Processing Units (GPUs).
[0101] The device 700 comprises means for performing at least one method described herein. In one example, the means comprises at least one processor and at least one memory including computer program code, the at least one memory and the computer code configured to, with the at least one processor, cause the device at least to perform the method.
[0102] Although the device 700 is illustrated as a single device it is appreciated that, wherever applicable, functions of the device 700 may be distributed to a plurality of devices, for example, to implement example embodiments as a cloud computing service.
[0103] Although the subject matter has been described in language specific to structural features and/or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as examples of implementing the claims and other equivalent features and acts are intended to be within the scope of the claims.
[0104] It will be understood that the benefits and advantages described above may relate to one example or may relate to several examples. The examples are not limited to those that solve any or all of the stated problems or those that have any or all of the stated benefits and advantages. It will further be understood that reference to ‘an’ item may refer to one or more of those items.
[0105] The operations of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate. Additionally, individual blocks may be deleted from any of the methods without departing from the spirit and scope of the subject matter described herein. Aspects of any of the examples described above may be combined with aspects of any of the other examples described to form further examples without losing the effect sought.
[0106] The term ‘comprising’ is used herein to mean including the method, blocks or elements identified, but that such blocks or elements do not comprise an exclusive list and a method or apparatus may contain additional blocks or elements.
[0107] Although the disclosure and its advantages have been described in detail with reference to specific features and embodiments thereof, it is evident that various changes, modifications, substitutions, combinations and alterations can be made thereto without departing from the spirit and scope as defined by the appended claims. The specification and drawings are, accordingly, to be regarded simply as an illustration as defined by the appended claims, and are contemplated to cover any and all modifications, variations, combinations or equivalents that fall within the scope of the present subject-matter.