{"id":22832,"date":"2025-04-25T23:12:09","date_gmt":"2025-04-25T23:12:09","guid":{"rendered":"https:\/\/www.bloomreach.com\/library\/two-tower-neural-networks-and-personalized-product-recommendations"},"modified":"2026-06-02T19:03:32","modified_gmt":"2026-06-02T19:03:32","slug":"two-tower-neural-networks","status":"publish","type":"library","link":"https:\/\/www.bloomreach.com\/en\/blog\/two-tower-neural-networks","title":{"rendered":"Two-Tower Neural Networks and Personalized Product Recommendations"},"content":{"rendered":"<p><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/ecommerce-product-recommendation-engine\"><span style=\"font-weight: 400;\">Product recommendations<\/span><\/a><span style=\"font-weight: 400;\"> are a critical use case for modern <\/span><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/digital-commerce-explained\"><span style=\"font-weight: 400;\">digital commerce<\/span><\/a><span style=\"font-weight: 400;\"> companies. Recommendation systems play a significant role in suggesting <\/span><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/digital-commerce-explained\"><span style=\"font-weight: 400;\">personalized products<\/span><\/a><span style=\"font-weight: 400;\"> to customers, resulting in increased sales and customer satisfaction.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Collaborative filtering has been a popular technique in ecommerce product recommendations for many years, with the traditional approach involving matrix factorization. However, as the limitations of this more traditional approach have surfaced, more advanced techniques such as neural networks have been utilized.<\/span><\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Artificial_neural_network\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Neural networks<\/span><\/a><span style=\"font-weight: 400;\"> are a powerful tool from the world of <\/span><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/tag\/ai-and-innovation\"><span style=\"font-weight: 400;\">artificial intelligence (AI)<\/span><\/a><span style=\"font-weight: 400;\">. They use interconnected nodes, or neurons, in a layered structure inspired by the human brain to teach computers how to process and interpret data. This type of machine learning, known as deep learning, allows computer systems to adapt and improve over time by learning from their mistakes. By leveraging this technology, AI-powered neural networks can solve complex problems that traditional computing would struggle with.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When testing a Two-Tower Neural Network instead of the <\/span><a href=\"https:\/\/developers.google.com\/machine-learning\/recommendation\/collaborative\/basics\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Alternating Least Squares (ALS)<\/span><\/a><span style=\"font-weight: 400;\"> matrix factorization algorithm, we saw significant improvement with personalized product recommendations in the recall@10 offline metric. Specifically, we tested this on six customers and saw 147%, 23%, 27%, 25%, 25%, and 90% improvement on each respective customer for an average of just over 56% improvement per customer. Results varied across catalog and interaction volume characteristics \u2014 the spread reflects real differences in how much each customer&#8217;s data set benefited from feature-rich representations over pure interaction signals.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Two-Tower Neural Network is a deep learning algorithm that consists of two parts, where one part serves to represent the user and the other the item, and the parts are connected at the end to create the final prediction. The user tower processes behavioral signals \u2014 browsing history, past purchases, session context \u2014 into a dense embedding vector. The item tower independently processes product features (title, category, description, price) into a matching vector for each item in the catalog. Recommendations are generated by computing dot product similarity between the two embeddings, which makes retrieval fast enough to match users against catalogs of millions of products in real time.<\/span><\/p>\n<p><iframe src=\"https:\/\/www.youtube-nocookie.com\/embed\/7CTBDtOa_R4?start=723\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p><span style=\"font-weight: 400;\">Similarly, ALS is a matrix factorization algorithm that computes low-rank approximations of the user item interaction matrix. The primary limitation of standard ALS is that it does not account for user and item features, which are essential for personalized recommendations. It also suffers from the cold start problem, where new items or users have insufficient data to generate recommendations.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Two-Tower Neural Network can incorporate user and item features, including textual descriptions, images, and reviews. This allows for more personalized and accurate recommendations, even for new users and items.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The improvement in product recommendations by implementing Two-Tower Neural Networks could be significant, as it can lead to increased customer satisfaction and higher sales for ecommerce businesses. The accuracy of recommendations also helps in building trust with customers, resulting in increased loyalty and repeat business.<\/span><\/p>\n<h2>Evolving Recommendations With Sequential TTNN<\/h2>\n<p><span style=\"font-weight: 400;\">With more recent advancements, we&#8217;re already seeing some significant improvement in personalized recommendations with <\/span><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/how-sequential-two-tower-neural-networks-revolutionize-product-recommendations\"><span style=\"font-weight: 400;\">Sequential Two-Tower Neural Networks<\/span><\/a><span style=\"font-weight: 400;\">. These sequential models can learn high-order dependencies across a sequence of interactions, meaning they can follow a customer&#8217;s &#8220;breadcrumbs&#8221; and deliver the <\/span><i><span style=\"font-weight: 400;\">next best<\/span><\/i><span style=\"font-weight: 400;\"> recommendation based on that series of actions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The culmination of these advancements is <\/span><a href=\"https:\/\/documentation.bloomreach.com\/engagement\/docs\/recommendations-plus\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Recommendations+<\/span><\/a><span style=\"font-weight: 400;\">, a smarter recommendation engine powered by Loomi AI that can improve product click-through rates by 9% or more. With Sequential Two-Tower Neural Networks powering Recommendations+, marketers can personalize in real time across all their channels, launch quickly with a no-code visual editor, and drive greater results.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In <\/span><a href=\"https:\/\/www.bloomreach.com\/en\/blog\/recommendations-plus-key-use-cases\"><span style=\"font-weight: 400;\">A\/B tests across live deployments<\/span><\/a><span style=\"font-weight: 400;\">, results have consistently cleared the plateau that traditional recommendations hit. A large furniture retailer saw a 35% increase in email click-through rate and a 32% increase in conversion rate in abandoned cart flows. A major jewelry retailer running Recommendations+ on product detail pages for returning visitors saw a 26% lift in conversion rate and a 35% lift in total revenue in a one-month test.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Get more out of your <a href=\"https:\/\/www.bloomreach.com\/en\/products\/marketing-automation\">marketing automation <\/a><\/span><span style=\"font-weight: 400;\">with the power of Two-Tower Neural Networks. <\/span><a href=\"https:\/\/documentation.bloomreach.com\/engagement\/docs\/recommendations-plus\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Check out Recommendations+<\/span><\/a><span style=\"font-weight: 400;\"> and deliver more personalized experiences today.<\/span><\/p>\n\n<div id=\"faq-block-v1block_788379d88f89eb70a05695c9ae156eb3\" class=\"faq-section-v1-container exclude_from_toc\">\n    <h3 class=\"section-title\">Frequently Asked Questions<\/h3>\n\n        <div\n        class=\"wd-faq-block-acf align wp-block-acf-faq-section-v1\" id=\"faq-block-v1block_788379d88f89eb70a05695c9ae156eb3\"    >\n    \n        <div class=\"faq-section-v1-acf__innerblocks\">\n<div id=\"faq-section-v1-single-itemblock_b026943c89646ce0b5ff5273ab3c77a8\" class=\"faq-section-v1-single-item-container\">\n    <div class=\"title-section\">\n        <p class=\"item-title\">What is a two-tower neural network?<\/p>\n        <span class=\"item-button\">\n            <svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <g>\n            <path\n                    d=\"M9.00004 9.22C8.72864 9.22 8.47352 9.11415 8.2815 8.92281L1.00718 1.64917C0.910834 1.55282 0.85791 1.42526 0.85791 1.28888C0.85791 1.15318 0.910834 1.02494 1.00718 0.929271C1.10353 0.832923 1.23109 0.779999 1.36679 0.779999C1.5025 0.779999 1.63073 0.832923 1.7264 0.929271L9.00004 8.20223L16.2737 0.929271C16.37 0.832923 16.4976 0.779999 16.6333 0.779999C16.769 0.779999 16.8972 0.832923 16.9929 0.929271C17.0893 1.02562 17.1422 1.15318 17.1422 1.28888C17.1422 1.42458 17.0893 1.55282 16.9929 1.64849L9.71927 8.92213C9.52793 9.11415 9.27213 9.22 9.00004 9.22Z\"\n                    fill=\"#019ACE\"\/>\n            <\/g>\n            <\/svg>\n        <\/span>\n    <\/div>\n\n    <div class=\"item-content\">\n        <div class=\"content-inner\">\n            <p>A two-tower neural network is a deep learning architecture for <a href=https:\/\/www.bloomreach.com\/en\/blog\/ecommerce-product-recommendation-engine>recommendation systems.<\/a> It uses two separate neural networks: a user tower that encodes behavioral and demographic signals, and an item tower that encodes product features. Recommendations are generated by computing similarity between their output embeddings. The architecture is designed for large-scale retrieval, where a model must match users to relevant items from catalogs that may contain millions of products.<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div id=\"faq-section-v1-single-itemblock_4828925d5cdba8b6c5be902a095bf0f2\" class=\"faq-section-v1-single-item-container\">\n    <div class=\"title-section\">\n        <p class=\"item-title\">What is the difference between a two-tower model and matrix factorization?<\/p>\n        <span class=\"item-button\">\n            <svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <g>\n            <path\n                    d=\"M9.00004 9.22C8.72864 9.22 8.47352 9.11415 8.2815 8.92281L1.00718 1.64917C0.910834 1.55282 0.85791 1.42526 0.85791 1.28888C0.85791 1.15318 0.910834 1.02494 1.00718 0.929271C1.10353 0.832923 1.23109 0.779999 1.36679 0.779999C1.5025 0.779999 1.63073 0.832923 1.7264 0.929271L9.00004 8.20223L16.2737 0.929271C16.37 0.832923 16.4976 0.779999 16.6333 0.779999C16.769 0.779999 16.8972 0.832923 16.9929 0.929271C17.0893 1.02562 17.1422 1.15318 17.1422 1.28888C17.1422 1.42458 17.0893 1.55282 16.9929 1.64849L9.71927 8.92213C9.52793 9.11415 9.27213 9.22 9.00004 9.22Z\"\n                    fill=\"#019ACE\"\/>\n            <\/g>\n            <\/svg>\n        <\/span>\n    <\/div>\n\n    <div class=\"item-content\">\n        <div class=\"content-inner\">\n            <p>Matrix factorization (including ALS) represents users and items as latent vectors derived solely from the interaction matrix \u2014 who bought what. It cannot incorporate item features like product descriptions or images, and it suffers from the cold start problem. Two-tower models solve both limitations by encoding rich features in each tower independently. They can make recommendations for new users from their first meaningful session interactions and for new products as soon as they&#8217;re added to the catalog. For more on collaborative filtering fundamentals, see <a href=https:\/\/developers.google.com\/machine-learning\/recommendation\/collaborative\/basics>Google&#8217;s ML documentation on collaborative filtering.<\/a><\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div id=\"faq-section-v1-single-itemblock_43a54f2242af1e11052472c01598dd4a\" class=\"faq-section-v1-single-item-container\">\n    <div class=\"title-section\">\n        <p class=\"item-title\">How does a two-tower recommendation system work at inference time?<\/p>\n        <span class=\"item-button\">\n            <svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <g>\n            <path\n                    d=\"M9.00004 9.22C8.72864 9.22 8.47352 9.11415 8.2815 8.92281L1.00718 1.64917C0.910834 1.55282 0.85791 1.42526 0.85791 1.28888C0.85791 1.15318 0.910834 1.02494 1.00718 0.929271C1.10353 0.832923 1.23109 0.779999 1.36679 0.779999C1.5025 0.779999 1.63073 0.832923 1.7264 0.929271L9.00004 8.20223L16.2737 0.929271C16.37 0.832923 16.4976 0.779999 16.6333 0.779999C16.769 0.779999 16.8972 0.832923 16.9929 0.929271C17.0893 1.02562 17.1422 1.15318 17.1422 1.28888C17.1422 1.42458 17.0893 1.55282 16.9929 1.64849L9.71927 8.92213C9.52793 9.11415 9.27213 9.22 9.00004 9.22Z\"\n                    fill=\"#019ACE\"\/>\n            <\/g>\n            <\/svg>\n        <\/span>\n    <\/div>\n\n    <div class=\"item-content\">\n        <div class=\"content-inner\">\n            <p>During serving, item embeddings for the entire catalog are pre-computed by the item tower and stored in a vector index. When a user arrives, the user tower computes their embedding in real time based on current session signals. The system then retrieves the items with the highest dot product similarity to that user embedding using approximate nearest neighbor (ANN) search \u2014 typically the top-K results \u2014 in milliseconds. This design is what makes personalization at scale practical.<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div id=\"faq-section-v1-single-itemblock_7ba5fb9155f77abda53ac4d8821c1bf0\" class=\"faq-section-v1-single-item-container\">\n    <div class=\"title-section\">\n        <p class=\"item-title\">What is a sequential two-tower neural network?<\/p>\n        <span class=\"item-button\">\n            <svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <g>\n            <path\n                    d=\"M9.00004 9.22C8.72864 9.22 8.47352 9.11415 8.2815 8.92281L1.00718 1.64917C0.910834 1.55282 0.85791 1.42526 0.85791 1.28888C0.85791 1.15318 0.910834 1.02494 1.00718 0.929271C1.10353 0.832923 1.23109 0.779999 1.36679 0.779999C1.5025 0.779999 1.63073 0.832923 1.7264 0.929271L9.00004 8.20223L16.2737 0.929271C16.37 0.832923 16.4976 0.779999 16.6333 0.779999C16.769 0.779999 16.8972 0.832923 16.9929 0.929271C17.0893 1.02562 17.1422 1.15318 17.1422 1.28888C17.1422 1.42458 17.0893 1.55282 16.9929 1.64849L9.71927 8.92213C9.52793 9.11415 9.27213 9.22 9.00004 9.22Z\"\n                    fill=\"#019ACE\"\/>\n            <\/g>\n            <\/svg>\n        <\/span>\n    <\/div>\n\n    <div class=\"item-content\">\n        <div class=\"content-inner\">\n            <p>A sequential two-tower neural network extends the standard architecture by modeling the full sequence of a user&#8217;s interactions, capturing both which items they&#8217;ve engaged with and the order of those engagements. This enables a &#8220;next best action&#8221; recommendation that reflects the user&#8217;s current journey rather than their aggregate history. Bloomreach&#8217;s Recommendations+ uses <a href=https:\/\/www.bloomreach.com\/en\/blog\/how-sequential-two-tower-neural-networks-revolutionize-product-recommendations>Sequential TTNN<\/a> as its default model.<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<\/div>\n\n        <\/div>\n    \n            <script type=\"application\/ld+json\">\n        {\n            \"@context\": \"https:\/\/schema.org\",\n            \"@type\": \"FAQPage\",\n            \"mainEntity\": [\n                                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is a two-tower neural network?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"A two-tower neural network is a deep learning architecture for recommendation systems. It uses two separate neural networks: a user tower that encodes behavioral and demographic signals, and an item tower that encodes product features. Recommendations are generated by computing similarity between their output embeddings. The architecture is designed for large-scale retrieval, where a model must match users to relevant items from catalogs that may contain millions of products.\n\"\n                    }\n                },\n                                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is the difference between a two-tower model and matrix factorization?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Matrix factorization (including ALS) represents users and items as latent vectors derived solely from the interaction matrix \u2014 who bought what. It cannot incorporate item features like product descriptions or images, and it suffers from the cold start problem. Two-tower models solve both limitations by encoding rich features in each tower independently. They can make recommendations for new users from their first meaningful session interactions and for new products as soon as they&#039;re added to the catalog. For more on collaborative filtering fundamentals, see Google&#039;s ML documentation on collaborative filtering.\n\"\n                    }\n                },\n                                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How does a two-tower recommendation system work at inference time?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"During serving, item embeddings for the entire catalog are pre-computed by the item tower and stored in a vector index. When a user arrives, the user tower computes their embedding in real time based on current session signals. The system then retrieves the items with the highest dot product similarity to that user embedding using approximate nearest neighbor (ANN) search \u2014 typically the top-K results \u2014 in milliseconds. This design is what makes personalization at scale practical.\n\"\n                    }\n                },\n                                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is a sequential two-tower neural network?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"A sequential two-tower neural network extends the standard architecture by modeling the full sequence of a user&#039;s interactions, capturing both which items they&#039;ve engaged with and the order of those engagements. This enables a &quot;next best action&quot; recommendation that reflects the user&#039;s current journey rather than their aggregate history. Bloomreach&#039;s Recommendations+ uses Sequential TTNN as its default model.\n\"\n                    }\n                }\n                            ]\n        }\n        <\/script>\n        <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Product recommendations are a critical use case for modern digital commerce companies. Recommendation systems play a significant role in suggesting personalized products to customers, resulting in increased sales and customer satisfaction. Collaborative filtering has been a popular technique in ecommerce product recommendations for many years, with the traditional approach involving matrix factorization. However, as the [&hellip;]<\/p>\n","protected":false},"author":106,"featured_media":20638,"template":"","ew-regions":[],"ew-solutions":[],"library_type":[513],"library_blog_tag":[365,371],"industry":[],"channel":[],"topic":[],"class_list":["post-22832","library","type-library","status-publish","has-post-thumbnail","hentry","library_type-blog","library_blog_tag-marketing-automation","library_blog_tag-product-recommendations"],"acf":{"library_blog_banner_content":"","library_blog_banner_cta1_text":"","library_blog_banner_cta1_href":"","library_blog_banner_cta1_new_tab":false,"library_blog_banner_cta2_text":"","library_blog_banner_cta2_href":"","library_blog_banner_cta2_new_tab":false,"library_blog_banner_bg_color":"#EAF7FE","library_blog_banner_cta_text_color":"#FFF","library_blog_banner_cta_bg_color":"#019ACE","library_blog_banner_cta2_text_color":"#000","library_blog_banner_cta2_bg_color":"#FFF","library_blog_chatgpt_content":"","library_blog_chatgpt_cta_href":"","library_blog_chatgpt_cta_text":"Ask ChatGPT"},"_links":{"self":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library\/22832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library"}],"about":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/types\/library"}],"author":[{"embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/users\/106"}],"version-history":[{"count":4,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library\/22832\/revisions"}],"predecessor-version":[{"id":90216,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library\/22832\/revisions\/90216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/media\/20638"}],"wp:attachment":[{"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/media?parent=22832"}],"wp:term":[{"taxonomy":"ew_regions","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/ew-regions?post=22832"},{"taxonomy":"ew_solutions","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/ew-solutions?post=22832"},{"taxonomy":"library_type","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library_type?post=22832"},{"taxonomy":"library_blog_tag","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/library_blog_tag?post=22832"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/industry?post=22832"},{"taxonomy":"channel","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/channel?post=22832"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.bloomreach.com\/en\/wp-json\/wp\/v2\/topic?post=22832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}