## A new approach for encoding code and assisting code understanding

Mengdan Fan Peking University Bejing, China fanmengdan@pku.edu.cn

Wei Zhang * Peking University Bejing, China zhangw@sei.pku.edu.cn

Haiyan Zhao Peking University Bejing, China zhhy.sei@pku.edu.cn

Zhi Jin * Peking University Beijing, China zhijin@pku.edu.cn

Abstract -Some companies (e.g., Microsoft Research and Google DeepMind) have discovered some of the limitations of GPTs' autoregressive paradigm next-word prediction , manifested in the model's lack of planning, working memory, backtracking, and reasoning skills. GPTs rely on a local and greedy process of generating the next word, without a global understanding of the task or the output. We have confirmed the above limitations through specialised empirical studies of code comprehension. Although GPT-4 is good at producing fluent and coherent text, it cannot handle complex logic and generate new code that haven't been seen, and it relies too much on the formatting of the prompt to generate the correct code. We propose a new paradigm for code understanding that goes beyond the next-word prediction paradigm, inspired by the successful application of diffusion techniques to image generation (Dalle2, Sora) and protein structure generation (AlphaFold3), which have no autoregressive constraints. Instead of encoding the code in a form that mimics natural language, we encode the code as a heterogeneous image paradigm with a memory of global information that mimics both images and protein structures. We then refer to Sora's CLIP upstream text-to-image encoder model to design a text-to-code encoder model that can be applied to various downstream code understanding tasks. The model learns the global understanding of code under the new paradigm heterogeneous image , connects the encoding space of text and code, and encodes the input of text into the vector of code most similar to it. Using self-supervised comparative learning on 456,360 text-code pairs, the model achieved a zero-shot prediction of new data. This work is the basis for future work on code generation using diffusion techniques under a new paradigm to avoid autoregressive limitations.

Index Terms -next-word prediction, CLIP, global information

## I. INTRODUCTION

Some studies have found that there are several limitations of the GPT's autoregressive next-word prediction paradigm. Microsoft Research notes that GPT-4 lacks planning, working memory, ability to backtrack, and reasoning abilities [1]. For example, although the model has enough knowledge to answer the question, the architecture of the GPT-4 cannot give the whole correct answer at once, but needs to be guided step by step to give the correct answer. The autoregressive nature of GPT-4 forces it to solve problems sequentially. Google Deepmind notes that GPTs are not applicable to most areas of mathematics due to the high cost of converting human proofs into a machine-verifiable autoregressive format [2]. And

* Corresponding authors

permuting the premise order can cause a performance drop of over 30 % [3]. When producing full natural-language proofs on a set of geometry problems from the IMO competitions, GPT-4 has a success rate of only 0 % , often making syntactic and semantic bugs throughout its output, and showing little understanding of the geometry knowledge and the problem statements themselves. In summary, GPTs rely on a local and greedy process to generate the next word, without a global understanding of the task or the output [1].

We further do empirical studies in the field of code understanding and confirm the limitations of the autoregressive paradigm. For example, in terms of code understanding and generation, GPT-4 cannot understand complex logic with multi-step operations and generates incomplete code. Moreover, GPT-4 relies excessively on the form of the prompt. Even if the input text has the same meaning, but just different syntax, the generated code will be much different and often contain bugs. GPT-4 is also not good at matrix operation. It often introduces new bugs while fixing matrix operation's bugs. But after giving the prompt step by step, GPT-4 can generate a correct answer, which shows that the model is actually trained with enough knowledge, but the autoregressive paradigm makes it not answer the question well. All of these issues confirm the limitations of GPT-4 noted by Microsoft and Google. The limitations makes it overly dependent on the given prompt, unable to understand the meaning of the code globally, and also unable to generate complete and correct code including multi-step operation/matrix operation at one time.

Diffusion technology has made significant progress in the generation of images [4, 5] and life molecules [6] recently. It is a wonder that the model does not have limitations like that of GPTs. The model can learn the global information of the picture/life molecule, and generate the picture/life molecule at one time instead of step by step. Diffusion is a class of latent variable models inspired by considerations from non-equilibrium thermodynamics, which was originally used to generate high-quality images [7]. In particular, the CLIP+diffusion model (Dalle2) can create new pictures that have never been seen in the data set according to the input text, such as panda mad scientist mixing sparkling chemicals, artstation [4, 5]. The model seems to really understand the image. Where CLIP is a transferable visual models from natural language supervision, which provides text embedding vector for diffusion model to generate high-quality images [8]. The core idea of CLIP is to embed images and texts into a shared semantic space so that the embeddings of similar images and texts are closer in this space.

We expect that the CLIP+Diffusion technique can be applied to code generation to avoid the limitations of the autoregressive paradigm and find that code has similar properties with both natural language and image. Both natural language and code use tokens to construct sentences or programs, and both need to follow certain grammatical rules to be correctly understood; existing techniques for code generation have drawn on deep learning techniques (e.g., GPTs) for natural language. There are a lot of ambiguity in natural language, such as polysemy, context dependence, and so on. Out-of-vocabulary (OOV) problems often occur when the model is dealing with natural language, i.e. the vocabulary encountered is not in its predefined vocabulary. However, the code has almost no ambiguity and can avoid the problem of OOV by dividing the namespace. So we think the code does not need to use the autoregressive paradigm next-word prediction . In addition, we find similarities between codes and images: color images consist of components such as yellow, blue, black, etc., and each component (e.g., yellow) contains different entities (e.g., light yellow, dark yellow, etc.). The code consists of components such as classes, methods, variables, etc., and each component (e.g., method) contains different entities (e.g., method 1, method 2, etc.). We call the property that an object is composed of different types of components as heterogeneity.

We propose a transferable pre-training CLIP model for code understanding, which is the basis of generating high-quality code using diffusion technology and other code understanding tasks. For code encoding, we first broke the autoregressive encoding paradigm of GPTs imitating natural language, and propose a single-channel, one-dimensional, heterogeneous image encoding paradigm imitating images. Because according to the human programming mind, code is written in a sequence, so we encode the code as a single-channel, one-dimensional, heterogeneous image. Built-in or common classes, methods, attributes, operators, and other components of the code are encoded as fixed numerical IDs. The different entities of each component (for example, the built-in methods print() and len() in Python) are encoded as similar IDs, in order to imitate similar pixels in the image. User defined components only have unique IDs in the same namespace, and different entities of each component are also encoded as similar IDs. This encoding scheme avoids the OOV problem, so we do not need to embed the tokens, ensuring that the new paradigm imitate images, not natural languages. For pretraining, we propose a code encoder consisting of one-dimensional convolution and local pooling, which is suitable for the above code encoding paradigm. The encoder not only learns the preceding part of the code of the next token like GPTs, but iteratively learns the global information of code with the memory of global information.

## II. MOTIVATION

GPTs' autoregressive next-word prediction paradigm has some limitations, such as lack of planning, working memory, ability to backtrack, and reasoning abilities, and do not apply to most areas of mathematics [1, 2]. Researchers believe that GPTs lack a global and deep understanding of the task or the output because they rely on a local and greedy process of generating the next word [1]. In addition, during the long-term use of GPT-4 in the field of code understanding, we further confirmed the limitations through following cases studies.

## A. Cases Studies

1) Lack of ability to handle complex logic: We asked GPT4 some code problems with complex logic and multi-step operations, such as 'My training data is ndarray with shape (359, 4), which means 359 arrays, and each array contains 4 lists (length is 1149, 3000, 3000, 18 respectively.).The label of the training data is ndarray with shape (359,). Now, I want to train an embedding network whose input is the training data and whose output is an ndarray with shape (359, 4), representing 359 arrays, each containing 4 lists of length n. The output is an ndarray with shape (359, 4). How should it be implemented? ' The statement may seem convoluted, so we have added a summarising 'In a nutshell, we want the training data to be input into this embedding network, and each array contains 4 lists that are embedded to the same length n.' Although human beings can understand the meaning of the problem. GPT-4 gives us incomplete code full of logical bugs as shown in Fig. 1. E.g., GPT-4 does not understand the shape of the output we want (batch size, 4), and wrongly concatenates 4 lists of each item. The training process is also not complete, e.g., there is no for loop of epochs. The variables indicated by red wavy line are also not explained.

Fig. 1: An example of GPT-4 handles complex logic.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-b222b6fc-7525-41c7-9351-c2c9d507ad5d.jpg)

2) Lack of working memory: If we ask the same question again after some rounds of dialogue because we forgot the early answer, GPT-4 often give a completely different answer. This will result in almost all dialogue rounds being invalid. For example, we repeated the GPT-4 question 'How do I use a terminal command to output a commit that changes more

than n files in a repository?' twice, with several rounds of dialogue between them. GPT 4 answered two different wrong answers as shown in Fig. 2 (a) and (b) respectively.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-b5ba1b70-bf2a-40fc-8f12-7878ec2442cd.jpg)

b) Second answer

Fig. 2: An example of GPT-4 lacking memory.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-e916e6bf-5242-4f25-9513-d1904fe01249.jpg)

b) Second answer

Fig. 3: An example of GPT-4's over-reliance on the prompt format.

3) Overly dependent on prompt format: GPT-4 will provide different answers to questions with different formats but the same meaning. For example, when we ask 'How do I use a terminal command to find the commits that change more than n files in a repository?' and 'How can I use a terminal command to find the commits with a number of changed files greater than n in a repository?' GPT-4 give very different answers as shown in Fig. 3

4) Not good at matrix operation: GPT-4 often fails to handle matrix operations correctly or introduces new bugs when handling matrix operations. For example, as shown in Fig. 4(a), when we asked GPT-4 why the figure (a) code reported an error: 'ValueError: could not broadcast input array from shape (359,1149) into shape (359,)'. GPT-4 will allow us to modify according to Fig. 4(b). But it introduces new bugs into the code: ValueError: only one element tensors can be converted to Python scalars. GPT-4 ignores global correctness and instead gets stuck in solving local problems.

(b) Fixed code

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-2d8b82c5-6b84-4c54-87c1-410dcf4d3602.jpg)

Fig. 4: An example of GPT-4 is not good at matrix operation.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-4dedba51-fc91-4417-a42a-f5849df70592.jpg)

5) Lack of creativity: GPT-4 is not creative. For example, if we ask GPT-4 to invent an algorithm for predicting earthquakes, GPT-4 cannot provide an answer, even if it is to provide some ideas for this scientific question.

## B. Discussion

1) Using CLIP+Diffusion [4] in image understanding/generation can avoid some limitations similar to using

GPTs in code understanding/generation: As shown Fig. 5(a) and (b), even if a piece of text with complex logic is input, CLIP+Diffusion can globally understand the text and correctly generate images with complex structures. The lines and colors in (a) are complex, precise, and smooth. The complex fur and texture in (b) are generated clearly. Even if the form of the input text is changed, as long as the meaning is the same, the generated image is still correct. In addition, CLIP+Diffusion also has creativity. As shown Fig. 5(c) and (d), panda mad scientist and a cat dressed as french emperor napoleon holding a piece of cheese hardly ever appear in real life and the training data. But CLIP+Diffusion technology can create unprecedented images based on human descriptions. Therefore, we believe that if this technology is applied to code understanding/generation, it will greatly improve performance in this area.

vibrant portrait painting of Salvador Dalí with a robotic half face

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-291408d2-3456-4bf0-9f7b-c6febb8b072d.jpg)

a shiba inu wearing a beret and black turtleneck

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-3ac788e5-d3ea-4053-a194-38908057783e.jpg)

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-5011f8d4-10fe-4c3c-82c4-c0c6db910859.jpg)

panda mad scientist sparkling chemicals, artstation mixing

propaganda poster depicting a cat dressed as french emperor napoleon holding piece of cheese

Fig. 5: Examples of CLIP+Diffusion can avoid some limitations similar to GPTs.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-c20fdcde-54a6-4c85-a604-f05e8f2ee374.jpg)

2) In contrast to CLIP+Diffusion for image understanding/generation, why do GPTs for code understanding/generation have the above limitations: We find that the CLIP model would memorize the entire image information globally while training, rather than only memorizing the previous code to infer the next token as GPTs do. For example, CLIP learned about the global distribution of fur color and texture, as well as the structure and position information of facial features of many pictures of shiba inu. Thus, the image representation corresponding to the textual description given by the human output by CLIP already has global information about the image [4]. Then Diffusion further restores a highquality image on this image representation.

However, due to GPTs adhering to the paradigm of predicting the next token, the model is unable to globally remember fully functional code information. As shown in Fig. 1, if we ask GPT-4 to generate a logically complex code, even if GPT4 has already learned the complex code, because it can only predict the next token based on the previous code, GPT-4 cannot generate a structurally complete code. Other limitations of GPTs should also be caused by this paradigm. Specifically, after a few rounds of dialogue, when we ask the same question again, due to changes in the previous text, the answers given by GPT-4 are completely different. And, questions with the same meaning but different forms are different previous texts, so GPT-4 will generate different answers. In addition, the reason why GPTs are not good at handling matrix operations and has creativity is because it does not truly understand the code. Understanding code requires learning the entire code information globally during the training process, rather than local context. Overall, we believe that GPTs' autoregressive next-word prediction paradigm is the fundamental reason for the limitations of GPTs.

3) Why is the autoregressive paradigm adopted by GPTs to understand/generate code: Autoregressive paradigm is used for understanding and generating code by GPTs because it is mainly applicable to understanding and generating natural language. Both code and natural language are tools that people use to communicate. Natural language is used for communication between humans, while code is used for communication between humans and computers. Both natural language and code are token sequences with specific syntax rules. However, natural language is more flexible than code. Natural language can change according to different contexts, e.g. the meaning of words can change according to the context. That is, the same words have ambiguity in different contexts. Therefore, the understanding and generation of natural language require a strict reliance on contextual analysis. This is also the main reason why GPTs use autoregressive paradigm. Although Transformer encoders can globally learn the information of the entire text and classify the predicted words, Transformer decoders still use the autoregressive paradigm in the generation process [9]. This paradigm generates tokens step by step to ensure semantic correctness, relying on the previous text for each step, rather than outputting complete sentences. And GPTs only adopt the decoder of the transformer. We summarize the above analysis in columns 1 and 3 of table I.

4) What are the challenges and solution in proposing a new paradigm that can avoid the limitations of GPTs: To avoid the limitations of GPTs, we attempt to mimic images and propose a new structured coding paradigm for code, making it easier to apply CLIP+Diffusion technology. But we found that the code not only has features of images but also features of natural language. This has led to the challenge of proposing a new paradigm. As shown in columns 2 and 4 of table I, in terms of imitating images, we find there are similarities between codes and images. Images consist of components/colors (e.g., yellow, blue), and each component contains different entities (e.g., light yellow, dark yellow for yellow). Code consists of

TABLE I: The similarity of image, text, and code

|       | Linguistic   | Heterogeneous   | Ambiguous   | OOV      |
|-------|--------------|-----------------|-------------|----------|
| Image | ×            | ✓               | ×           | ×        |
| Code  | ✓            | ✓               | ×           | Solvable |
| Text  | ✓            | ×               | ✓           | ✓        |

Linguistic: Is it language?

Heterogeneous: Is it heterogeneous?

Ambiguous: Is it possible to have ambiguity?

OOV: Is it has OOV issues?

components/types of entities (e.g., classes, methods, variables), and each component contains different entities (e.g., method 1, method 2 for method). We call the property an object is composed of different types of components is heterogeneity.

However, we found that different tokens in the code cannot be represented with finite numbers, leading to Out-ofvocabulary (OOV) issues. OOV problem means that the vocabulary encountered is not in the predefined vocabulary, which is often the case when the model is dealing with natural language. If the embedding technique in natural language is used to solve this problem, it will result in the inability of the CLIP+Diffusion technique to be applied. This is the challenge of proposing a new paradigm. However, unlike natural language, the namespaces of entities in code could much smaller than those of words in natural language. The namespace of entities in the code is related to the functional scope of the code, which can be packages, folders, files, or even code snippets. However, the namespace of most words in natural language is often the entire vocabulary. Therefore, if the namespace is strictly partitioned and numbers are used repeatedly to encode these cross-namespace tokens, this may solve the OOV problem.

## III. APPROACH

## A. Heterogeneous image paradigm

The code has a highly standardized structure and is not as flexible as the structure of natural language, so we first break the commonly used autoregressive next-word prediction paradigm for code understanding and generation, and propose a novel single-channel, one-dimensional, heterogeneous image paradigm. Both code and image have heterogeneity, meaning that both image and code are composed of different components. Therefore, we refer to images and consider different components in the code (e.g., classes, methods, variables, operators, numbers, symbols) as different components in the image (e.g., red, yellow, blue, green, etc.). Different entities within the same component, e.g., class 1 and class 2, etc. in class) are represented by similar numerical values (IDs) to simulate the pixel values of different entities within the same component in the image (e.g., dark red, light red, pink, etc. in red). To prevent significant differences in the values assigned to tokens due to too many different tokens (OOV problem), we take a series of measures: 1) Clean the code. Replace the messy data that will affect the accuracy of code tokenization with placeholders of different categories. For example, the messy string output by the print function is occupied with 'STR'. This step is optional and needs to be ensured that

removing such messy data will not reduce the accuracy of the text-to-code matching results. 2) Divide tokens of entities such as the definition of classes, methods, and variables into built-in tokens in the code library and user-defined tokens, 3) Divide User-defined tokens into namespaces, 4) The builtin tokens are represented by fixed numerical values (IDs), 5) User-defined tokens are only represented as temporary values (can be reused within other namespaces) in the namespace. As shown in Fig. 6(a), a function is first represented as a 2-dimensional heterogeneous image, where keywords are represented by different similar red pixel values (e.g. bright red, pink, light red, etc.), variables are represented by similar green pixel values, and operators/symbols (e.g. &gt; , : , ( ) are represented by similar yellow pixel values.

$$<_Python_>         def maxNum (num1, num2):
            if num1 > num2:
                return num1
            else:
                return num2

\ ^.*.        .*.      .*.$$

2-dimensional heterogeneous image b) 1-dimensional heterogeneous image

Fig. 6: Examples of heterogeneous image.

In addition, we also follow the same process 1)-5) for tokens that represent entity calls (such as calls to methods or class attributes). In order to further reduce the number of such tokens and avoid OOV issues, we abstracted these types of token. That is, we use the same numerical value to indicate the tokens that contain the same entity call, e.g., a param.strip and address.strip use the same numerical value to indicate. We then maintain a list for each such numerical value for users to manually find which specific token it is. Using the encoding method described above, we created a Python vocabulary on the 456,360 code snippets in the training set in the CodeSearchNet data set 1 . CodeSearchNet corpus contains code snippets and associated document comments from various programming languages from open-source repositories on GitHub. This corpus has been initiated and maintained by GitHub to encourage the development of code search and code understanding technologies. The number of tokens and the corresponding IDs are different in different programming language. For example, the specific components and their numerical coding ranges in Python are shown in the Tab. II.

For color images, there are three primary colors (red, blue, green), and other colors can be composed of these three primary colors. So, a color image consists of three channels. The heterogeneous image proposed in this paper has only a single channel. Different components are equally important, rather than the fact that most components/colors in the image are composed of three basic components/colors. According to human programming thinking, code is written sequentially. This means that the dependence of each token on the tokens

TABLE II: Components and their ID ranges

| Components        | ID Range   | Components         | ID Range    |
|-------------------|------------|--------------------|-------------|
| Keyword           | 1-35       | Built-in Attribute | 6930-7960   |
| Built-in Class    | 36-54      | Variable           | 7961-9999   |
| Class             | 55-1584    | Built-in AttrCall  | 10000-11270 |
| Built-in Method   | 1585-2698  | Attribute Call     | 11271-11509 |
| Method            | 2699-4454  | Operator           | 11510-11554 |
| Built-in MethCall | 4455-6128  | Number             | 11555-13811 |
| Method Call       | 6129-6929  |                    |             |

AttrCall: Attribute call, MethCall: Method call.

above and below it is not as high as the dependence on the tokens before and after it. Thus, the two-dimensional heterogeneous image is finally flattened into a one-dimensional heterogeneous image, and line breaks and spaces are retained and treated as symbols, as shown in Fig. 6(b). This structure also looks like a living molecule chain (proteins, DNA, RNA, etc.). For example, they are all composed of basic elements and have heterogeneity, and they also look like a chain. DeepMind has applied diffusion technology to predict the structure of living molecules. This further inspires us to explore and promote the application of diffusion technology in code understanding and generation. Designing a robust pretrained model for text-to-code is the most fundamental task. Overall, code has similarities with both images and natural language. The new paradigm simulates the numerical encoding of pixels in images on the token's numerical encoding in code. But in terms of shape, the new paradigm still looks like a sequence of natural language.

## B. Contrastive Language-Code Pre-training

1) Architecture: We adopt a similar architecture of the Contrastive Language Image Pre-training (CLIP) model [8], and propose the Contrastive Language Code Pre-training (CLCP) model. During the training phase, we jointly trains an code encoder and a text encoder to predict the correct (code, text) pairs of a batch. As shown in Fig. 7, given a batch of N (code, text) pairs, CLCP is trained to predict which of the N × N possible (code, text) pairings in the batch are the correct pairs. CLCP learns a multi-modal embedding space by jointly training an code encoder and a text encoder. In view of the strong advantages of the pre-trained transformer model in understanding natural language [9-12], we continue to train directly on the model with our data. However, because we have adopted a new code coding paradigm, we have designed a new code encoder, which will be introduced later.

̸

The model parameters are updated by the loss function, which maximizes the cosine similarity C i · T i (1 ≤ i ≤ N ) of the code embeddings C i and the text embeddings T i of the correct pairs N in the batch while minimizing the cosine similarity C i · T j (1 ≤ i, j ≤ N,i = ) j of the code embeddings C i and text embeddings T j of the incorrect pairings N 2 -N . Specifically, we optimize a symmetric cross entropy loss over these similarity scores [8]. We expect these two encoders to be used for many downstream tasks for code understanding in the future, such as using a text encoder to encode input text into a vector in the multi-modal embedding space and then inputting

that vector into the diffusion model to restore high-quality code. Alternatively, use code encoders in different languages to translate code written in one programming language into code written in another programming language, etc.

2) Code encoder based on one-dimensional convolution: For the code encoder, we refer to two-dimensional convolution for learning on images [13], and design a one-dimensional convolutional and pooling neural network suitable for onedimensional heterogeneous images. As shown in Fig. 8, the source code is first encoded in one-dimensional heterogeneous images according to the new encoding paradigm. Secondly, we use one-dimensional convolution to convolve one-dimensional heterogeneous images with a kernel size of k and a step size of s to learn the semantic and structural information of the code. That is, the convolution kernel slides on the input one-dimensional image with a step size of s , and at each step the IDs in the one-dimensional image are multiplied by the corresponding weights in the convolution kernel and summed to obtain the IDs of the dimensions of the output new vector/feature map. Each value of the new vector will be activated by the Relu function. Third, a one-dimensional (1D) max or average pooling is applied to the activated new vector, with window size k ′ and step size s ′ . The basic idea of pooling operation is to divide the input 1D image (also known as a vector) into several sub-vectors and calculate the maximum or average value of each sub-vector as the value of each dimension of the output vector. Overall, convolution operations are mainly used to learn semantic and structural information between code tokens, while pooling is mainly used to aggregate information from sub-code fragments. Finally, the code encoder consists of M blocks, each containing a convolution layer and a pooling layer.

Fig. 9 shows the overview of a code encoder containing two blocks. Each convolution layer outputs multiple feature maps, each of which is calculated by sliding a 1D convolution kernel on the input numerical encoding (i.e., the process in Fig. 8(b)). Each pooling layer receives the output of the convolution layer activated by Relu, performs pooling operations on them respectively, outputs the same number of feature maps, and then passes them to the next block. The multiple feature maps output by the last block are flattened and input into a fully connected layer.

3) Strategies for optimizing the training process: We use Relu function [14] to activate the output of the convolutional layer and use the He initialization [15] method to initialize the parameters of the convolutional layer. Compared with traditional Sigmoid and Tanh activation functions, Relu has a linear relationship when the input is greater than 0, which means it will not saturate (i.e. the gradient will not approach 0). This helps to solve the problem of gradient vanishing, especially in deep networks [16-18]. However, in deep networks, if the weight values are large, the accumulation of gradients during backpropagation can lead to gradient explosion problems [15, 18]. So we use He Initialization [15] to avoid the above problem. The core idea of Kaiming initialisation is to adjust the initial values of the weights based on the number of input nodes, in order to maintain consistency in the variance of the activation values across all layers. Specifically, if a neuron has n input nodes, its weights are initialised to a Gaussian or uniform distribution with a mean of 0 and a variance of 2 /n . The advantage of this is that no matter how deep the network is, the distribution of activation values will remain within a reasonable range, avoiding the problem of vanishing or exploding gradients and making the network easier to train.

In addition, Batch Normalization (BN) is a commonly used technique that normalizes each batch of data. The BN layer can reduce the data distribution changes caused by parameter variations in the network, thereby avoiding gradient vanishing or exploding problems during training and improving the convergence performance of the model. However, by normalizing the input of each layer, BN may suppress the diversity of some representations [19] because BN forces each layer's input to have similar mean and variance during training, which may result in the model losing sensitivity to some important changes and diversity in the input distribution. This means that BN may not be applicable to certain types of neural networks, especially those that require preserving certain characteristics of the input distribution. For example, CNN models used for image classification typically have the first few layers responsible for extracting low-level features of the image, such as edges, corners, textures, etc. In these layers, each feature map may focus on a specific pattern within the image. However, BN independently normalizes each batch of feature maps, which may disrupt the relative differences between feature maps. Therefore, when learning the code Heterogeneous image in this paper, we do not use BN to avoid blurring the distribution characteristics of the input image. But in RQ2 of section IV below, we will compare the effects of using BN and not using BN.

## IV. EXPERIMENTS

## A. Research Questions

The goal of this paper is to propose a new code encoding paradigm and design an applicable text-code encoder training model that can be migrated to different downstream tasks of code understanding so that the model may avoid the limitations of the autoregressive model on code understanding. Following questions are set on 4 × NVIDIA Tesla V100 with 32GB RAM: RQ1. How effective is CLCP on Zero-Shot Transfer? It is difficult for the proposed CLCP to achieve high accuracy on the zero-shot task with a limited amount of data (456,360 (code, text) pairs) compared to the dataset (400 million (image, text) pairs) used for the CLIP model. For example, some previous work also used natural language supervision for image representation learning like CLIP [20-23]. However, due to the limited amount of training data, their effects are not as amazing as those of the CLIP (e.g., Li et al [20] reach only 11 5% . accuracy on ImageNet in a zero-shot setting), so they have not attracted enough attention. Collecting a large amount of high-quality data is still an arduous task in the future. In this paper, to evaluate whether the proposed method has application value, we change the size of training and testing

Fig. 7: Architecture. CLCP jointly trains a code encoder and a text encoder to predict the correct(code, text) pairs. In the testing phase, for the target code, the learned model is treated as a zero shot classifier to select the description that best matches it.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-d5e703c1-7a85-4252-8899-65ea399952b9.jpg)

Fig. 8: The specific implementation of a block of the code encoder.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-2a5b883b-45b5-4176-a6c3-c99d8c360277.jpg)

sets to magnify the effect of the model on the zero-shot task and evaluate whether the model can effectively learn the global information of the code.

RQ2. Ablation experiment. In this RQ, we conducted some ablation experiments to explore training strategies for learning code heterogeneous images, rather than training strategies that are applicable to all models. Specifically, pooling operations reduce the dimensionality of feature maps by aggregating information from adjacent regions, which inevitably results in the loss of some detailed information. For example, in max/average pooling, only the max/average value within each region is retained, while all other values are discarded. This type of information loss can gradually accumulate in multilayer networks, leading to poor model performance when fine features are required. Therefore, in this RQ, we removed the pooling layer of CLCP model to verify its effectiveness.

In addition, we use He initialization [15] to avoid gradient explosion problems in backpropagation, and do not use BN to avoid blurring the distribution characteristics of the input image. In this RQ, we remove He initialization and add BN respectively to verify the effectiveness of the optimization strategy we adopted during the training process.

RQ3. Will the prompt engineering improve the results? Prompt engineering is a common method to improve the effect of model based on natural language supervision [811]. We observed that the description of the code in the dataset is complex and redundant. The common categories of redundancy is summarized in table III. So we try to clean up and reconstruct the text to improve the experimental results.

## B. Dataset

Different program languages need different code parsers to make vocabularies. Therefore, the number of tokens and the corresponding IDs are different in different programming languages. To reduce the workload of program language preprocessing, this paper makes an exemplary evaluation in Python. We use the Python data set of the CodeSearchNet corpus 2 , including 456,360 (code, text) pairs in the training set and 22176 pairs in the testing set. The CodeSearchNet corpus contains multiple public code libraries from GitHub, covering a variety of programming languages (such as Java, python, JavaScript, etc.). The public code libraries contain a large number of code snippets from a variety of open-source software repositories, and the document comments corresponding to the code snippets help to understand the function and purpose of the code. This corpus has been initiated and maintained by GitHub to encourage the development of code-understanding technologies. We selected 13,760 samples in the testing set that were completely different from the training set category by identifying different text descriptions and manually verifying them. These samples were used as an initial data set to evaluate the accuracy of the model in zero-shot tasks.

## C. Experimental Setup

Because the amount of data is limited, we imitate the works [20-22, 24] referred to in the clip paper to do some preliminary exploration to verify the proposed approach is effective (e.g. the accuracy in [20] is only 11.5 % ), instead of pursuing the effect of training under 400 million data as in the clip model.

1) Settings for RQ1: Dataset size: We observe whether the proposed approach is effective on the zero-shot transfer task by gradually increasing the size of the dataset and the depth of the model. As for data set size, each time we randomly sample datasets of different sizes to evaluate the improvement of the model in zero-shot transfer compared to the results of random prediction. Specifically, the size of the training set is 30000,

Fig. 9: Overview of the code encoder.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-e9dfd277-bb06-4816-aef0-25256a9ea98f.jpg)

60000, 120000, 240000, and 456,360 respectively. 456,360 is the size of the entire training set in the dataset. For the above training set, we conducted two experiments. The testing set for the first experiment consists of 50 randomly selected samples. The testing set for the second experiment consists of 50, 100, 300, 600 and 1000 randomly selected samples.

is normalised by BN. CLCP rn -Pool : A variant of CLCP rn where the pooling layer is removed. CLCP rn -Init : A variant of CLCP rn where the He initialization is removed.

Baselines: CLCP lp : CLCP using local pooling layers. For the different sizes of training/testing sets, this type of CLCP is divided into five subtypes: CLCP lp (3), CLCP lp (4), CLCP lp (5), CLCP lp (6), CLCP lp (7) which represent CLCP lp with 3, 4, 5, 6 and 7 blocks. A block indicates a functional unit that includes a convolution layer and a pooling layer. CLCP gp : Similarly, CLCP uses global pooling layers. This type of CLCP is divided into five subtypes: CLCP gp (3), CLCP gp (4), CLCP gp (5), CLCP gp (6), and CLCP gp (7). CLCP rn : Because ResNet [25] has achieved advanced performance in image coding and has been applied to the CLIP model, we use the same architecture as ResNet but replace the 2D convolution with 1D convolution. That is, the model consists of an input layer, N residual blocks and a global pooling layer. Each block contains three convolution layers. Among them, the first two convolution layers process the input data in series, while the third convolution layer is used to convolute the input by 1 × 1 convolution directly. Similarly, for different sizes of training/testing sets, N is taken as 3, 4, 5, 6 and 7. Finally, the output of the third convolution layer is added to the output of the second convolution layer as the final output of a residual block.

Evaluation Metrics: Accuracy (Acc.): The proportion of the correctly matched (code, text) pairs in the L testing pairs. If all L codes are randomly matched with the texts, the estimated acc (EA) is 1 /L .

2) Settings for RQ2: Dataset size: We use the same dataset sizes in RQ1.

Baselines: Two most effective baselines in RQ1 are used, CLCP lp and CLCP rn with different blocks. In addition, their variants are also used as baselines: CLCP lp +BN : A variant of CLCP lp where the input of each convolutional layer is normalised by BN. CLCP lp -Pool : A variant of CLCP lp where the pooling layer is removed. CLCP lp -Init : A variant of CLCP lp where the He initialization is removed. CLCP rn +BN : A variant of CLCP rn where the input of each convolutional layer

Evaluation Metrics: In this RQ, we calculate the difference between the average accuracy of CLCP lp /CLCP rn with different blocks and the average accuracy of their variants across all sizes of datasets to determine the variation in the effect of the variants relative to the original model.

3) Settings for RQ3: Data quality: The text that describes the code in CodeSearchNet contains a lot of redundant information. For example, it contains user-defined paths, folder structures, and some demonstration information containing code results with special symbols. The redundant information can reduce the effectiveness of the model. Therefore, we perform prompt engineering on the dataset, i.e. we filter the redundant information in the text. The specific categories of redundant information are listed in Table III. We call the dataset filtered by prompt engineering is called CodeSearchNet(p) . Both CodeSearchNet(p) and CodeSearchNet are used in RQ2.

Dataset size: We use the same dataset sizes in RQ1 for CodeSearchNet and CodeSearchNet(p) respectively.

Baselines: We use the two most effective baselines in RQ1, which are CLCP lp and CLCP rn . Similarly, for different sizes of training/testing sets of CodeSearchNet and CodeSearchNet(p) , CLCP lp is divided into CLCP lp and CLCP lp (p), each of which is further divided into 5 subtypes that represent CLCP lp with 3, 4, 5, 6 and 7 blocks.

Evaluation Metrics: Use the same metrics of RQ1.

## D. Experiment Results

Answer to RQ1: As shown in Fig. 10 (stacked area chart), the legend represents the size of the model/the size of the training set. The different colors represent the growth in the model accuracy in different model sizes and dataset sizes. We can see that as the sizes of the training set and model increase, the performance of all models improves on the testing sets of different size. And all models perform better than the estimated Acc(EA) of random prediction. In particular, the overall effect of variants using global pooling is not as good as that of variants using local pooling. This may be because global pooling compresses the entire feature map into a single value by averaging or maximizing operations, which to some extent loses some important local information. If this information is

TABLE III: Categories of redundant information of the description of the code

| Type                     | Examples                                                                                                                                                                                                                           | Explain                                                                |
|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|
| Contains special symbols | The algorithm used is based on streamlib's implementation of 'HyperLogLog in Practice: Algorithmic Engineering of a State of the Art Cardinality Estimation Algorithm', available here < https://doi.org/10.1145/2452376.2452456 > | The text contains URLs with special symbols.                           |
| Contains special symbols | Return the union of this RDD and another one. &amp;gt;&amp;gt;&amp;gt; rdd = sc.parallelize([1, 1, 2, 3]) &amp;gt;&amp;gt;&amp;gt; rdd.union(rdd).collect() [1, 1, 2, 3, 1, 1, 2, 3]                                               | The text contains a running demonstration with special symbols.        |
| Contains special symbols | Structure: train dir. person1 somename1.jpeg... somename1.jpeg ...                                                                                                                                                                 | The text contains the file directory                                   |
| Unclear explanation      | [True, True, False, True, False], 2 -&gt; [[True, True], [True, False], [False, True], [True, False],]                                                                                                                             | The text is not clear, and only the running demonstration is included. |
| Unclear explanation      | Parameters ---- i : int, slice, or sequence of integers axis : int                                                                                                                                                                 | The text is not clear. It all consists of phrases.                     |

critical to the task, the effectiveness of global pooling will be reduced. Local pooling is a pooling operation performed on a local region (usually a small sliding window) of a feature map, taking the maximum or average value within that region as the output, in order to preserve the salient information in the feature map. Compared to global pooling, local pooling can retain more local information, which is more advantageous for learning code images that require fine feature representation.

For the results in Fig 11, when the size of the test set increases synchronously with the size of the training set and model, the performance of all variants of the model decreases. That is to say, the model is underfitting. This may be because the training data are too limited compared to CLIP, which was trained on 400 million data points. In particular, because we have not used embedding techniques in NLP but have redefined the paradigm of code representation, the model needs to learn the dependency relationships between tokens on its own. Therefore, this type of code image data has a high degree of diversity and complexity. So, the model may not be able to learn the general patterns of the data from a limited data.

Fig. 10: As the sizes of the training set and model increase, the performance of variants on the testing sets of same size.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-69460242-7c2f-4ae2-8d96-afed31b45fb1.jpg)

Answer to RQ2: Fig. 12 shows the decrease in accuracy of models CLCP lp and CLCP rn compared to the original model when adding or removing different components. EA represents the estimated Acc of the baseline random prediction. The vertical axis represents adding (+) or deleting (-) components,

Fig. 11: As the sizes of the training set and model increase, the performance of variants on the testing sets of different size.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-0a2841e9-4747-49b3-bf2c-4226a0d2803f.jpg)

and the horizontal axis represents decreased average ACC. of CLCP lp and CLCP rn with different sizes across all different training/testing dataset sizes. The model size and dataset size are the same as that of RQ1. Legends of different colors represent different original models.

As shown in fig. 12, removing the pooling layer did not alleviate underfitting as expected, but resulted in a significant decrease in accuracy. The accuracy of CLCP lp -Pool is even lower than that of random prediction. We observed that after 2 3 -epochs of training, the validation loss of CLCP lp -Pool and CLCP rn -Pool no longer decreased, which means that the training process of the models fell into local optima. Therefore, after removing the pooling layer, the model experienced overfitting. In addition, as expected, after removing He initialization, the performance of both CLCP lp -Init and CLCP rn -Init decreased compared to the original model. After adding the BN layer, the performance of CLCP lp and CLCP rn also decreased. This may because BN independently normalizes each batch of code feature maps, which may disrupt the relative differences between feature maps.

Answer to RQ3: As the sizes of the training set and model increase, the performance of CLCP with and without prompt engineering on the testing sets of same and different size are show in Fig. 13 and 14. The overall performance of CLCP without prompt engineering (CLCP lp and CLCP rn ) is worse

Fig. 12: Removing and adding different components, changes in the effectiveness of CLCP lp and CLCP rn .

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-41eabe28-0784-491e-b2f5-683d0d1ef33e.jpg)

than that of CLCP with prompt engineering (CLCP lp (p) and CLCP rn (p)). With an increase in data volume and models, the effectiveness of all models on the same testing dataset is steadily improving. In contrast, the effectiveness of all models decreases when the sizes of the testing dataset increase, regardless of whether prompt engineering is used. Therefore, using prompt engineering on the dataset can improve the performance of the model to some extent.

Fig. 13: As the sizes of the training set and model increase, the performance of CLCP with and without prompt engineering on the testing sets of same size.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-025150e4-d525-4f04-add2-d2a189b09bf7.jpg)

Fig. 14: As the sizes of the training set and model increase, the performance of CLCP with and without prompt engineering on the testing sets of different size.

![image](https://ac.marcodsn.me/arxiv-markdown-images/2408.00521v2-figure-83f2828a-90e8-49e0-a5fe-75947ac4a08c.jpg)

## V. THREAT TO VALIDITY

Internal validity. Due to hardware and data limitations, we did not use as many datasets as OpenAI used to train CLIP models to train CLCP models. We simply followed CLIP's previous work of proposing text-to-image (which was only initially trained and tested on limited data) and proposed an initial text-to-code work. This results in the trained CLCP being not robust and cannot be directly used for downstream tasks of code understanding. The main purpose of this paper is to provide a new perspective for researchers engaged in code understanding. In future work, we will collect more datasets and apply for more funding to evaluate our model on better hardware environments. And because we did not use pre-trained embeddings for code encoding, but instead proposed a new encoding paradigm and retrained it, we did not compare with other works that used ready-made embeddings. External validity. The source code of clip model is not open, and many training details have not been published. Therefore, we replicated and improved its framework ourselves, which to some extent reduced the performance of proposed model.

## CONCLUSION

Microsoft Research and Google DeepMind have found many limitations in the GPTs' autoregressive paradigm, manifested in the model's lack of planning, working memory, backtracking, and reasoning skills. Microsoft Research found that GPT relies on a local greedy process of generating the next word, without a global understanding of the task or output. We further summarized the limitations of the autoregressive paradigm on code understanding through empirical research. That is to say, GPTs cannot handle complex logic and generate new code that has not been seen before, and they rely too much n othe format of prompts to generate correct code. To address this issue, we propose a new code encoding paradigm inspired by the successful application of diffusion techniques in image generation, such as the Dalle2 and Sora models. We first discovered that the structure of code has both natural language characteristics and image/protein molecular chain characteristics, and encoded the code into a heterogeneous image paradigm with global information memory that mimics the structure of images and proteins. Then, we refer to Sora's CLIP upstream text-to-image encoder model and design a textto-code encoder model that can be applied to various downstream code understanding tasks. This model learns the global understanding of code under the new paradigm, connects the encoding space of text and code, and encodes text input into the most similar code vector. By conducting self-supervised comparative learning on 456360 text code pairs, the model achieved zero-shot prediction for new data. This work is the foundation for using diffusion techniques to generate code in a new paradigm to avoid autoregressive limitations in the future.

## REFERENCES

[1] S. Bubeck, V. Chandrasekaran, R. Eldan, J. Gehrke, E. Horvitz, E. Kamar, P. Lee, Y. T. Lee, Y. Li, S. M. Lundberg, H. Nori, H. Palangi, M. T. Ribeiro, and

- Y. Zhang, 'Sparks of artificial general intelligence: Early experiments with GPT-4,' CoRR , vol. abs/2303.12712, 2023.
- [2] T. H. Trinh, Y. Wu, Q. V. Le, H. He, and T. Luong, 'Solving olympiad geometry without human demonstrations,' Nat. , vol. 625, no. 7995, pp. 476-482, 2024.
- [3] X. Chen, R. A. Chi, X. Wang, and D. Zhou, 'Premise order matters in reasoning with large language models,' CoRR , vol. abs/2402.08939, 2024.
- [4] A. Ramesh, P. Dhariwal, A. Nichol, C. Chu, and M. Chen, 'Hierarchical text-conditional image generation with CLIP latents,' CoRR , vol. abs/2204.06125, 2022.
- [5] W. Peebles and S. Xie, 'Scalable diffusion models with transformers,' in IEEE/CVF International Conference on Computer Vision, ICCV 2023, Paris, France, October 16, 2023 , pp. 4172-4182, IEEE, 2023.
- [6] J. D. Josh Abramson, Jonas Adler, 'Accurate structure prediction of biomolecular interactions with alphafold 3,' Nat. , pp. 1476-4687, 2024.
- [7] J. Ho, A. Jain, and P. Abbeel, 'Denoising diffusion probabilistic models,' in Advances in Neural Information Processing Systems 33: Annual Conference on Neural Information Processing Systems 2020, NeurIPS 2020, December 6-12, 2020, virtual , 2020.
- [8] A. Radford, J. W. Kim, C. Hallacy, A. Ramesh, G. Goh, S. Agarwal, G. Sastry, A. Askell, P. Mishkin, J. Clark, G. Krueger, and I. Sutskever, 'Learning transferable visual models from natural language supervision,' in Proceedings of the 38th International Conference on Machine Learning, ICML 2021, 18-24 July 2021, Virtual Event , vol. 139 of Proceedings of Machine Learning Research , pp. 8748-8763, PMLR, 2021.
- [9] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, and I. Polosukhin, 'Attention is all you need,' in Advances in Neural Information Processing Systems 30: Annual Conference on Neural Information Processing Systems 2017, December 4-9, 2017, Long Beach, CA, USA , pp. 5998-6008, 2017.
- [10] J. Devlin, M. Chang, K. Lee, and K. Toutanova, 'BERT: pre-training of deep bidirectional transformers for language understanding,' in Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, NAACL-HLT 2019, Minneapolis, MN, USA, June 2-7, 2019, Volume 1 (Long and Short Papers) , pp. 4171-4186, Association for Computational Linguistics, 2019.
- [11] T. B. Brown, B. Mann, N. Ryder, M. Subbiah, J. Kaplan, P. Dhariwal, A. Neelakantan, P. Shyam, G. Sastry, A. Askell, S. Agarwal, A. Herbert-Voss, G. Krueger, T. Henighan, R. Child, A. Ramesh, D. M. Ziegler, J. Wu, C. Winter, C. Hesse, M. Chen, E. Sigler, M. Litwin, S. Gray, B. Chess, J. Clark, C. Berner, S. McCandlish, A. Radford, I. Sutskever, and D. Amodei, 'Language models are few-shot learners,' in Advances in Neural Information Processing Systems 33: Annual Conference on
- Neural Information Processing Systems 2020, NeurIPS 2020, December 6-12, 2020, virtual , 2020.
- [12] L. Ouyang, J. Wu, X. Jiang, D. Almeida, C. L. Wainwright, P. Mishkin, C. Zhang, S. Agarwal, K. Slama, A. Ray, J. Schulman, J. Hilton, F. Kelton, L. Miller, M. Simens, A. Askell, P. Welinder, P. F. Christiano, J. Leike, and R. Lowe, 'Training language models to follow instructions with human feedback,' in Advances in Neural Information Processing Systems 35: Annual Conference on Neural Information Processing Systems 2022, NeurIPS 2022, New Orleans, LA, USA, November 28 - December 9, 2022 , 2022.
- [13] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, 'Gradient-based learning applied to document recognition,' Proc. IEEE , vol. 86, no. 11, pp. 2278-2324, 1998.
- [14] X. Glorot, A. Bordes, and Y. Bengio, 'Deep sparse rectifier neural networks,' in Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics, AISTATS 2011, Fort Lauderdale, USA, April 11-13, 2011 , vol. 15 of JMLR Proceedings , pp. 315-323, JMLR.org, 2011.
- [15] K. He, X. Zhang, S. Ren, and J. Sun, 'Delving deep into rectifiers: Surpassing human-level performance on imagenet classification,' in 2015 IEEE International Conference on Computer Vision, ICCV 2015, Santiago, Chile, December 7-13, 2015 , pp. 1026-1034, IEEE Computer Society, 2015.
- [16] S. R. Dubey, S. K. Singh, and B. B. Chaudhuri, 'A comprehensive survey and performance analysis of activation functions in deep learning,' CoRR , vol. abs/2109.14545, 2021.
- [17] O. Destras, S. L. Beux, F. G. de Magalhaes, and G. Nicolescu, 'Survey on activation functions for optical neural networks,' ACM Comput. Surv. , vol. 56, no. 2, pp. 35:135:30, 2024.
- [18] D. Hendrycks and K. Gimpel, 'Bridging nonlinearities and stochastic regularizers with gaussian error linear units,' CoRR , vol. abs/1606.08415, 2016.
- [19] S. Ioffe and C. Szegedy, 'Batch normalization: Accelerating deep network training by reducing internal covariate shift,' in Proceedings of the 32nd International Conference on Machine Learning, ICML 2015, Lille, France, 6-11 July 2015 , vol. 37 of JMLR Workshop and Conference Proceedings , pp. 448-456, JMLR.org, 2015.
- [20] A. Li, A. Jabri, A. Joulin, and L. van der Maaten, 'Learning visual n-grams from web data,' in IEEE International Conference on Computer Vision, ICCV 2017, Venice, Italy, October 22-29, 2017 , pp. 4193-4202, IEEE Computer Society, 2017.
- [21] K. Desai and J. Johnson, 'Virtex: Learning visual representations from textual annotations,' in IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2021, virtual, June 19-25, 2021 , pp. 11162-11173, Computer Vision Foundation / IEEE, 2021.
- [22] M. B. Sariyildiz, J. Perez, and D. Larlus, 'Learning visual representations with caption annotations,' in Com-

puter Vision - ECCV 2020 - 16th European Conference, Glasgow, UK, August 23-28, 2020, Proceedings, Part VIII , vol. 12353 of Lecture Notes in Computer Science , pp. 153-170, Springer, 2020.

- [23] Y. Zhang, H. Jiang, Y. Miura, C. D. Manning, and C. P. Langlotz, 'Contrastive learning of medical visual representations from paired images and text,' in Proceedings of the Machine Learning for Healthcare Conference, MLHC 2022, 5-6 August 2022, Durham, NC, USA , vol. 182 of Proceedings of Machine Learning Research , pp. 2-25, PMLR, 2022.
- [24] Y. Zhang, H. Jiang, Y. Miura, C. D. Manning, and C. P. Langlotz, 'Contrastive learning of medical visual representations from paired images and text,' in Proceedings of the Machine Learning for Healthcare Conference, MLHC 2022, 5-6 August 2022, Durham, NC, USA , vol. 182 of Proceedings of Machine Learning Research , pp. 2-25, PMLR, 2022.
- [25] K. He, X. Zhang, S. Ren, and J. Sun, 'Deep residual learning for image recognition,' in 2016 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2016, Las Vegas, NV, USA, June 27-30, 2016 , pp. 770778, IEEE Computer Society, 2016.
Mengdan Fan Wei Zhang Haiyan Zhao Zhi Jin
A new approach for encoding code and assisting code understanding
Some companies (e.g., Microsoft Research and Google DeepMind) have discovered
some of the limitations of GPTs' autoregressive paradigm next-word prediction,
manifested in the model's lack of planning, working memory, backtracking, and
reasoning skills. GPTs rely on a local and greedy process of generating the
next word, without a global understanding of the task or the output. We have
confirmed the above limitations through specialized empirical studies of code
comprehension. Although GPT-4 is good at producing fluent and coherent text, it
cannot handle complex logic and generate new code that hasn't been seen, and it
relies too much on the formatting of the prompt to generate the correct code.
We propose a new paradigm for code understanding that goes beyond the next-word
prediction paradigm, inspired by the successful application of diffusion
techniques to image generation (Dalle-2, Sora) and protein structure generation
(AlphaFold-3), which have no autoregressive constraints. Instead of encoding
the code in a form that mimics natural language, we encode the code as a
heterogeneous image paradigm with a memory of global information that mimics
both images and protein structures. We then refer to Sora's CLIP upstream
text-to-image encoder model to design a text-to-code encoder model that can be
applied to various downstream code understanding tasks. The model learns the
global understanding of code under the new paradigm heterogeneous image,
connects the encoding space of text and code, and encodes the input of text
into the vector of code most similar to it. Using self-supervised comparative
learning on 456,360 text-code pairs, the model achieved a zero-shot prediction
of new data. This work is the basis for future work on code generation using
diffusion techniques under a new paradigm to avoid autoregressive limitations.