Questionable content, possibly linked

Category: Other Page 60 of 178

More thoughts on Midjourney / Latent Space navigation

Did a couple posts on this already and wanted to continue the train of thought on the idea of handheld controllers for navigating latent spaces of image diffusion models like Midjourney (though theoretically the same concepts should apply for navigating any high dimensional space).

When this idea first landed, I worked extensively with ChatGPT v4 to flesh the concept out in a bit more detail, but I never captured that anywhere public. So here it is…

Core design challenges

After sketching out the general idea, so we were both on the same page. I asked CGPT what are the core design challenges here. I won’t include every little piece of the response, but selected highlights are below.

The core design challenge in this project is indeed interpreting a high-dimensional latent space into a physically navigable form using a handheld controller with limited input options. Mapping the complexity of a multi-dimensional latent space onto a device with a restricted number of controls, while maintaining a smooth and intuitive user experience, can be difficult.

Some specific challenges include:

  1. Dimensionality reduction: Latent spaces of image diffusion models can have hundreds of dimensions. The controller needs to facilitate navigation through these dimensions effectively while only using a few input controls (joysticks, dials, and buttons). Developing a suitable method for dimensionality reduction, such as PCA or t-SNE, that retains meaningful features and provides an intuitive navigation experience, is essential.
  2. Interpolation and navigation: Designing a system that enables smooth transitions between images while navigating the latent space is challenging. Interpolation techniques, such as linear or spherical interpolation, must be carefully chosen and optimized for the best results.

I’m not actually sure what all that means, but following those trails lead to some interesting and useful discoveries. I won’t bother trying to explain it and will instead pass the baton to CGPT.

Dimensionality Reduction

ChatGPT says on this topic:

Dimensionality reduction is a technique used to reduce the number of variables or dimensions in a dataset while preserving the relationships and structures within the data. In the context of your project, dimensionality reduction would be used to simplify the high-dimensional latent space of image diffusion models into a lower-dimensional representation that can be effectively controlled and navigated using the handheld controller.

PCA (Principal Component Analysis) and t-SNE (t-Distributed Stochastic Neighbor Embedding) are two common dimensionality reduction techniques.

PCA is a linear technique that identifies the directions (principal components) in the high-dimensional space where the variance is maximized. By selecting the top principal components, you can project the high-dimensional data onto a lower-dimensional space while preserving most of the data’s structure.

t-SNE is a nonlinear technique that aims to maintain the local structure of the high-dimensional data in the lower-dimensional space. It’s particularly useful for visualizing high-dimensional data in a 2D or 3D space, as it tends to cluster similar data points together.

In your project, you would need to develop a suitable method for dimensionality reduction that:

  1. Retains meaningful features: The chosen technique should preserve important relationships and structures in the latent space, so that the reduced representation remains meaningful and allows for intuitive navigation.
  2. Provides an intuitive navigation experience: The reduced representation should be easy to navigate with the handheld controller. Users should be able to explore the latent space and understand the relationship between different points in this space.

Are there any existing controllers for high dimensional spaces?

Before spending a ton of time reinventing the wheel here, I asked if it knew of any existing controllers which could already handle this kind of high dimensional navigation. It gave these ideas:

While there isn’t a specific controller designed solely for navigating high-dimensional spaces, several existing devices can be adapted or customized for this purpose. Some examples include:

  1. 3Dconnexion SpaceMouse: This 3D controller is designed primarily for navigating 3D environments in CAD, modeling, and design software. It features a pressure-sensitive puck that can be pushed, pulled, twisted, or tilted to control movement in up to six degrees of freedom (X, Y, Z, pitch, roll, and yaw). Although it was not designed specifically for high-dimensional latent spaces, it could potentially be adapted for such a purpose with custom software.
  2. MIDI controllers: MIDI controllers are used to control music production software and instruments, but they often feature a variety of knobs, sliders, and buttons that can be mapped to different parameters. These controllers could potentially be adapted for navigating high-dimensional spaces by assigning each control to a specific dimension or function.

The SpaceMouse actually looks pretty cool for 3D work like CAD:

And I saw elsewhere those buttons are all assignable to keyboard shortcuts, so perhaps there’s something there… I’ve also experimented with using small MIDI keyboards as custom macro controllers in the past (basically just for an assignable bank of buttons), and found that to be pretty useful too. So there might be something there, and I find this idea that music itself might just be a high dimensional space to be pretty intriguing.

User experience moving through High-D space

I then went in the direction of trying to nail down more specifics about what the UX might be like as you move from point to point within a latent or high dimensional space. Here’s excerpts around that:

Navigating through a latent space using a physical controller can be an immersive and engaging experience for the user. Here’s a step-by-step walkthrough of what the user experience might be like:

  1. Initial setup: The user connects the handheld controller to the software interface running on their computer. The software interface presents a visual representation of the latent space, with the current position highlighted or centered.
  2. Starting point: The user begins at a specific point in the latent space, which corresponds to a unique image generated by the image diffusion model.
  3. Exploration: Using the handheld controller’s inputs (joysticks, dials, and buttons), the user navigates through the latent space by moving along different dimensions. As they move, the software interface updates the displayed image in real-time, providing a fluid and responsive experience.
  4. Discovery: As the user navigates through the latent space, they will encounter images with varying degrees of similarity to their starting point. The user can find interesting, unique, or aesthetically pleasing images during their exploration.
  5. Adjustments: The user can use the controller’s dials to adjust settings like interpolation speed, image resolution, or level of detail. These adjustments can help fine-tune the navigation experience, making it more enjoyable and tailored to the user’s preferences.
  6. Saving and organization: If the user discovers an interesting image, they can press a dedicated button on the controller to save it to their image library. The software interface can include organizational tools, like folders or tags, to help users manage their saved images.
  7. Model or category switching: The user can press a button on the controller to toggle between different image diffusion models or categories, allowing them to explore various aspects of the latent space.

I’ll come back to this notion of categories in a bit.

Mapping Latent Space

First, I proposed that there should be some kind of map that gets generated from explorations, so you can see and reproduce the track you took during a session (or across sessions).

Adding a map that visualizes the user’s path of travel and marks saved images as points of interest would further enhance the user experience and provide additional context for their exploration of the latent space. Here’s how the map feature could work:

  1. Display: The software interface could include a separate panel or window displaying the map. The map can be a 2D or 3D representation of the reduced-dimensional latent space.
  2. Path visualization: As the user navigates through the latent space, the map can show their path of travel as a continuous line or a series of connected points. This provides a visual reference for the user’s exploration and can help them understand the relationships between different areas of the latent space.
  3. Saved points: When the user saves an image, the corresponding point in the latent space is marked on the map. This can be done using different symbols, colors, or icons to indicate the saved points. The user can hover over or click on these points to see a thumbnail of the saved image and access additional information or options (e.g., renaming, adding tags, or opening the full-resolution image).
  4. Zoom and pan: The user can zoom in or out and pan around the map to get a better view of their path and the saved points. This allows them to easily navigate and manage their saved images in the context of their exploration.
  5. History navigation: The map can also serve as a way to navigate through the user’s exploration history. By clicking on points along their path, the user can quickly return to previous locations in the latent space.
  6. Exporting the map: The user can have the option to export the map as an image or a file format compatible with other mapping or visualization tools. This can help them share their exploration with others or analyze their path in more detail.

What the user sees in real time

Got it to nail down more clearly what the user sees in real time as they navigate along dimensions…

When the user navigates from one point to another in the latent space using the physical controller, they will see a continuous and smooth transition of images in real-time on the software interface. The images displayed during this transition will represent intermediate points in the latent space between the starting point and the destination.

The real-time visualization of the user’s movement through the latent space can be achieved using interpolation techniques, such as linear or spherical interpolation. Interpolation allows for a smooth blending of features between the starting and destination images, creating a seamless sequence of images that gradually change as the user moves through the latent space.

As the user navigates, they will see the images evolving, with features from the starting and destination points mixing and merging in different ways. This real-time visual feedback helps the user understand the relationships between different points in the latent space and discover new, interesting, or aesthetically pleasing images during their exploration.

Mode switching & dimension assignment

I’m flying by the seat of my pants here imagining this device, but having used image diffusion models a lot (I’m up to 92 AI art books that I published), I have a pretty strong if still intuitive sense of how it might all work. One thing I suggested was that we’d need a way to rapidly switch controller modes and/or assign dimensions to manipulate on the fly. This might be tricky given that, for instance, even a single pixel could be considered a dimension (depending on the model). Here’s what CGPT offered around this topic:

You’re correct that allowing users to rapidly flip between or reassign different dimensions to manipulate as they travel through the latent space is important for an intuitive and engaging experience. Here are a few potential solutions to achieve this:

  1. Mode switching: Assign a button on the controller to switch between different modes, where each mode corresponds to a specific set of dimensions that the user can manipulate. In each mode, the controller’s inputs (joysticks, dials, etc.) can be reassigned to control the dimensions associated with that mode. The software interface can provide visual feedback indicating the current mode and the dimensions being controlled.
  2. Dynamic dimension assignment: Include touch-sensitive controls or additional buttons on the controller that can be used to cycle through dimensions for each input control. For example, a user could tap a button to cycle the X-axis joystick control through different dimensions, while another button could be used to cycle the Y-axis control. Visual feedback on the software interface can display the currently assigned dimensions.
  3. Custom presets: Allow users to create custom presets that define specific combinations of dimensions to be controlled by the inputs. These presets can be saved and loaded using the controller’s buttons or through the software interface. This enables users to quickly switch between their preferred dimension assignments during navigation.
  4. On-screen interface: Implement an on-screen interface that users can interact with directly using a mouse, touch screen, or another pointing device. The on-screen interface can be used to change the dimensions assigned to the controller’s inputs, providing a visual way to manage dimension assignments.

It also offered voice & gesture controls as additional options, but I don’t want to include either of those in initial design scope. To me those are just secondary ways of accessing primary functions controlled in the app.

What the app UI might consist of

I even got it to output very basic SVG code of the software layout, but it’s not worth sharing. So here’s the text description of what it thinks the app window would contain:

  1. Main window: The main window should be divided into two primary sections, the image preview area and the control panel.
  2. Image preview area: This section occupies the majority of the main window and displays the current image generated based on the user’s position in the latent space. It should be large enough to comfortably view the image and observe the real-time changes as the user navigates through the latent space.
  3. Control panel: The control panel can be located on the side or bottom of the main window and contain various interactive elements for controlling the software and adjusting settings. This panel can include:
    a. Dimension assignment: Include a list or grid of available dimensions, where users can click on a dimension to assign it to a specific controller input. The currently assigned dimensions can be highlighted or marked in some way.
    b. Model or category selection: Provide a dropdown menu or a list of available image diffusion models or categories for the user to choose from.
    c. Presets and modes: Include buttons or a dropdown menu for selecting custom presets or modes that define specific dimension assignments for the controller inputs.
    d. Interpolation settings: Provide sliders or input fields for adjusting interpolation speed, image resolution, or other relevant parameters.
    e. Navigation history: Display a visual timeline or a list of the user’s previous locations in the latent space, allowing them to click on a point to return to that location.
    f. Map view toggle: Include a button or checkbox to toggle the display of the map view, which shows the user’s path of travel and saved points in the latent space.
  4. Map view (optional): If the map view is enabled, it can be displayed as a separate panel or window, either floating or docked within the main window. The map should show the user’s path of travel, marked saved points, and allow for zooming and panning.

Agile user stories

I wanted to see just how far I could push it to do the job of the product manager, so I had it write up some Agile user stories describing the software product only:

  1. As a user, I want to see a real-time preview of the image generated based on my position in the latent space, so that I can observe the changes as I navigate.
  2. As a user, I want to assign different dimensions to my controller inputs, so that I can easily switch between controlling various dimensions in the latent space.
  3. As a user, I want to choose between different image diffusion models or categories, so that I can explore various aspects of the latent space.
  4. As a user, I want to save interesting images I discover during my exploration, so that I can revisit or use them later.
  5. As a user, I want to adjust interpolation settings like speed, image resolution, and level of detail, so that I can fine-tune my navigation experience.
  6. As a user, I want to view a map of my path of travel through the latent space, so that I can better understand the relationships between different areas and locate saved images.
  7. As a user, I want to access my navigation history, so that I can quickly return to previous locations in the latent space.
  8. As a user, I want to create custom presets for dimension assignments, so that I can quickly switch between my preferred combinations during navigation.

There are obviously technical issues to work out here, but as a PM reading those, they actually feel like something that could probably be built with an engineering team who has suitable domain expertise.

Categories

Since it brought up ‘categories’ again, I finally inquired what it meant by that, and it’s very useful:

In the context of item 3, categories refer to different groups or subsets within the latent space that are associated with specific types of images, visual features, or content. These categories could be derived from the underlying image diffusion model, which may have been trained on various classes of images, or they could be based on user-defined groupings.

For example, if the image diffusion model was trained on a diverse dataset containing images of animals, landscapes, and buildings, the categories could be “Animals,” “Landscapes,” and “Buildings.” By selecting a category, the user would be able to focus their exploration within the latent space on images that correspond to that specific category.

Alternatively, users may create their own custom categories based on their interests or preferences. These custom categories could be defined by selecting and tagging images during the exploration, effectively creating a user-defined grouping within the latent space.

Allowing users to choose between different categories helps them to more efficiently explore the latent space, as they can focus on specific types of images or visual features that are of interest to them.

Visit adjacent neighborhoods

One thing I always want when I explore in Midjourney especially is, if I find a good area within the latent space, I want to be able to easily and effectively scan adjacent neighborhoods. Here’s what CGPT says on how to potentially do that:

Local exploration mode: When the user enables local exploration mode, they will be presented with multiple smaller image previews that represent the adjacent neighborhoods in the latent space. These previews can be arranged in a grid or circular pattern around the current position.

Neighborhood selection: The user can click on any of the smaller image previews to instantly move to that adjacent neighborhood in the latent space. This will update the main image preview to reflect the new position and generate a new set of adjacent neighborhood previews.

Adjusting proximity: Provide a slider or input field in the software interface that allows the user to adjust the “proximity” of the adjacent neighborhoods. A smaller proximity value will result in neighborhoods that are closer to the current position in the latent space, while a larger value will display neighborhoods that are farther away. This enables users to fine-tune the scope of their local exploration.

While I’m at it, the idea of actually physically mapping out a high dimensional space like this is not so crazy, it seems. I found this Google Arts & Culture experiment, which they’re calling a t-SNE map. It’s hard to do justice to this visualization in only 2D, but here’s a screenshot:

That’s a pretty zoomed out view of a landscape of visually similar images. Here’s a more zoomed in look:

The best thing is really to try it out on the website, but it seems like their sidebar items in the guided basically correspond to what CGPT describes as ‘categories.’

What’m envisioning here is even more fluid and for lack of a better word “VR,” in that not only could you see the specific images like you can above, but it would fluidly move between them with attributes (dimensions) receding or increasing as you travel.

Other modes of use

I asked about what other modes users might want in addition to local exploration, described earlier. It said:

  1. Global exploration mode: This mode allows users to explore the entire latent space more freely, without being restricted to a specific category or local area. Users can navigate in any direction, discovering a wide variety of images and visual features along the way.
  2. Category-focused mode: As mentioned earlier, this mode lets users focus on a specific category within the latent space, such as animals, landscapes, buildings, or user-defined categories. The navigation and exploration will be tailored to that specific category, making it easier for users to find images that match their interests.
  3. Favorites mode: In this mode, users can revisit their saved images and explore the neighborhoods around those points. This can help users to discover new images that are similar to their favorites or to fine-tune their saved images by navigating the local areas around them.
  4. Guided tour mode: This mode provides a pre-defined or user-generated sequence of points in the latent space that users can navigate through. The guided tour can be based on specific themes, popular locations, or user-created paths. This mode can be useful for users who are new to the latent space exploration or who want to follow a curated experience.
  5. Random walk mode: In this mode, the software automatically generates a random path through the latent space, with the user being able to influence the direction or speed of the movement. This can create a more relaxed and serendipitous exploration experience, where users can discover unexpected images and visual features.
  6. Search mode: If the underlying image diffusion model supports it, users can search for specific images or visual features within the latent space using keywords or example images. In this mode, the software would display search results as points in the latent space, which users can then navigate to and explore.
  7. Collaborative mode: This mode allows multiple users to explore the latent space together, either by sharing a single exploration session or by viewing and interacting with each other’s paths and saved images. This can create a more social and engaging exploration experience, with users being able to share discoveries and collaborate on finding interesting images.

Referent-based mode

As I explained to CGPT:

i keep visualizing the ability to like define a group of referents, points or features or whatever in the latent space (like a blue ball, an elephant, a storm, etc) and then… something… explore themes around those but with different configurations or treatments. does that make sense?

And it replied, partial:

What you’re describing is a mode that allows users to define a group of referent points, features, or themes in the latent space and then explore variations and relationships between those referents. This can help users discover new and interesting images that share similarities with the chosen referents but have different configurations, styles, or treatments.

Here’s a potential approach to implementing this idea:

  1. Referent selection: Provide a user interface element (e.g., a list or a grid) where users can add, remove, or modify referent points, features, or themes. Users can either manually select these referents by navigating the latent space or use a search functionality if the underlying image diffusion model supports it.
  2. Theme exploration: Once the referents are defined, the software generates a set of variations or combinations based on the selected referents. These variations can be displayed as a grid of image previews or a more interactive visualization like a 2D or 3D scatter plot.

As it went on (and I clipped some less useful parts), I got to wondering, isn’t this just the same thing as simple prompt mode? How would this be different than just entering words for the things I want as my referents?

The concept you described earlier is different from a simple prompt mode. Both modes are aimed at guiding users to explore specific themes or concepts in the latent space, but they approach this goal in different ways.

In a simple prompt mode, users input a textual prompt (e.g., a keyword or a phrase), and the software generates a single image or a small set of images related to the prompt. The exploration in prompt mode is more linear, focusing on the specific concept described by the prompt. Users can adjust the prompt to refine the resulting images or explore other concepts, but the focus remains on a single theme at a time.

On the other hand, the referent-based mode you described earlier involves defining a group of referent points, features, or themes in the latent space and then exploring variations and relationships between those referents. The exploration in this mode is more dynamic and interactive, allowing users to discover new and interesting images that share similarities with multiple referents, while presenting different configurations, styles, or treatments.

In the referent-based mode, users have more control over the exploration process, as they can adjust parameters, add or remove referents, and interact with the generated variations in a more flexible way. This mode also promotes a deeper understanding of the relationships and connections between different areas of the latent space, as users can visually observe and manipulate the variations and combinations of referents.

So I think this distinction might be like… text prompts could be used to get me to a particular place in the latent space (or to modify what I’m seeing already). Whereas, a referent-mode might allow me to – as I’m exploring – say select certain entities that I see within the visualization… and maybe add them to a basket or something that I can take along with me as I go. And those referents wouuld show up or stick with me as I continue navigating the space, until I choose to release them. Something like that.

Short list of required app features

So, from there I had it go back through and distill all of this into a list of required features for the app:

Here is a short list of required features for the app, based on the discussions so far:

  1. Real-time image preview: Display the generated image based on the user’s current position in the latent space, updating in real-time as the user navigates.
  2. Dimension assignment: Allow users to assign different dimensions of the latent space to specific inputs or controls, enabling them to easily switch between controlling various dimensions.
  3. Category selection: Provide the ability to choose between different categories or subsets within the latent space to focus the exploration on specific types of images or content.
  4. Save images: Enable users to save interesting images they discover during exploration for future reference or use.
  5. Interpolation settings: Allow users to adjust settings like interpolation speed, image resolution, and level of detail to fine-tune their navigation experience.
  6. Exploration modes:
    a. Local exploration mode
    b. Global exploration mode
    c. Category-focused mode
    d. Favorites mode
    e. Guided tour mode
    f. Random walk mode
    g. Search mode (if supported by the image diffusion model)
    h. Collaborative mode
    i. Referent-based mode
  7. Map view: Display a map of the user’s path of travel through the latent space, with the ability to show saved points, referent points, and other user-defined landmarks.
  8. Navigation history: Provide access to the user’s navigation history, allowing them to quickly return to previous locations in the latent space.
  9. Custom presets: Allow users to create and manage custom presets for dimension assignments, making it easy to switch between preferred combinations during navigation.
  10. Adjustable proximity for local exploration: Provide a slider or input field to adjust the proximity of adjacent neighborhoods during local exploration.
  11. Help and tutorials: Offer in-app help and tutorials to assist users in understanding and utilizing the various features and exploration modes.

Minimal feature set for a v1

So from that, I asked it to reduce those features for a stripped down v1 prototype/proof of concept, and it said:

  1. Real-time image preview: Display the generated image based on the user’s current position in the latent space, updating in real-time as the user navigates.
  2. Dimension assignment: Allow users to assign different dimensions of the latent space to specific inputs or controls, enabling them to easily switch between controlling various dimensions.
  3. Save images: Enable users to save interesting images they discover during exploration for future reference or use.
  4. Local exploration mode: Provide a focused exploration mode that allows users to navigate the immediate neighborhood around a specific point in the latent space.
  5. Global exploration mode: Offer a more free-form exploration mode that enables users to explore the entire latent space without restrictions.
  6. Adjustable proximity for local exploration: Provide a slider or input field to adjust the proximity of adjacent neighborhoods during local exploration.
  7. Navigation history: Provide access to the user’s navigation history, allowing them to quickly return to previous locations in the latent space.

Wrap-Up

There’s a lot to digest in all of this of course. Apart from just the interesting aspects of the technical challenges described in this product design, the thing I’m most excited about is just how far you can take ChatGPT in a product design & planning session. The answer, at least in v4, is really really damn far.

Then, if it’s something that is amenable to the types of visual representations that Midjourney is capable of, this starts to become a pretty powerful set of tools. I suspect once they publicly release the image description tools for GPT-4, you’d also gain other possible vectors of insight into this design iteration process.

All told, this direction of a controller (hardware + software) specifically for Midjourney, but adaptable to any high-dimensional space or model, is a really compelling one for me as an artist making heavy use of the tools in the somewhat primitive state we see them today.

I’m not going to guarantee that I’ll be the one who builds it, but perhaps once Github Copilot X is released, I’ll be that much closer to actually being able to build some aspects of this down the road. If nothing else, I’m hoping these blog posts exploring these topics can inspire other innovations in the field. Exciting stuff!

Notes on Occupy AI

Occupy AI is the 91st volume in the AI lore series by Lost Books, a Canadian publisher specializing in AI-assisted art books.

This volume uses ChatGPT v4 with Midjourney v5 to imagine what might happen if a radical direct democracy group occupied the headquarters of prominent AI labs, demanding transparent direct control of the technologies by those most impacted by them, ordinary people. The book grew out of recent blog posts exploring related issues.

It’s fun to take this exploration out of the realm of pure hypotheticals, and into a sort of fictional sandbox which can act as a test bed or proving grounds for some of these ideas and societal conflicts. Fiction is great for this because it’s so much faster than having to wait around for reality to catch up, and nobody gets hurt from the exercise.

Unduly concentrating power

Not to pick on OpenAI, but I think their position requires that they can withstand legitimate criticism. I keep coming back again and again to their charter, which gives a shape to what their organization is supposed to aim for. This part just echoes in my brain:

We commit to use any influence we obtain over AGI’s deployment to ensure it is used for the benefit of all, and to avoid enabling uses of AI or AGI that harm humanity or unduly concentrate power.

Unduly concentrating power.

To quote a ZDNet article on the release of GPT-4:

In the GPT-4 technical report published Tuesday, alongside the blog post by OpenAI, the firm states that it is refraining from offering technical details because of competitive and safety considerations. 

“Given both the competitive landscape and the safety implications of large-scale models like GPT-4,” it writes, “This report contains no further details about the architecture (including model size), hardware, training compute, dataset construction, training method, or similar.”

Let’s put aside the safety question for a minute, because I personally don’t believe that any closed source single-owner AI system can ever even truly be termed “safe” in a meaningful way.

Instead, let’s just focus on that mention of “competitive landscape.”

Closing not just your source, but even technical explanations of your model, because of competition is literally an example of unduly concentrating power.

If their goal is moving towards AGI which benefits all of humanity, they’re already on the wrong path. Can they get back on the right one, one in line with their own charter?

Democratic Control of AI

Something I failed to get into in my last post about how do we know when it’s time to socialize AI

Well, actually I’ve written a bit about these problems of consent & coercion w/r/t to the apparatus of the state in the past, so I won’t rehash them all again. I’ll just randomly toss out links and let the future figure it out:

Like, there are a lot of precursor conditions that would need to be met before democratic control over AI would actually even be a “good thing.”

We take it for granted in these discussions that (1) we actually have true democracy (we don’t), (2) that the control mechanisms we’ve attached to democracy are actually good…

Like I hate to break it to you, but have you looked at some of these so-called lawmakers as people? They are… not ideal specimens of humanity that we should all strive to mimic.

When people say they want democratic control of AI, do they mean by Ted Cruz? Cause I think he would be happy to speed us along toward that future, but I don’t think it’s one we actually really want…

Secondly (fourthly? fifthly? I lost count), coupling the power of decision-making to the yoke of popularity necessarily attracts power-grabbers. It does not necessarily attract people who are good decision-makers, let alone lawmakers.

So, if we really want democratic control of AI, I think we need to spend some more time on the core problems of democracy.

What if, for example, we uncoupled the popularity contest part that politicians like from the lawmaking part. So you could “be” a politician, and seek status, and gain influence, etc. Be a voice. But you would have effectively no decision-making power. Maybe once you held office, you wouldn’t even be allowed to vote anymore. I don’t know. I’m just throwing out wild ideas here. It just seems like putting popularity at the helm of the law is a really big design flaw we’re just willfully ignoring.

And then of course, not holding the so-called stewards of the law to even the most obvious basic ethical principles… god don’t get me started.

Also, there’s a who’s-to-say argument here: with something so pivotal as the mass scale introduction of AI into global society, how do we know that a bunch of people voting directly or voting for someone else to do their voting for them would actually lead us towards “good” outcomes? While some of immediate the harms are obvious and predictable, the next order effects and the ones after that become more and more chaotic.

Arguably, I think we can still say the systems should be accountable and responsive to the people they affect. That seems like a given. A corporate capitalist structure does not optimize for that as an outcome, so unless we choose to change that basic structure to optimize for other outcomes, we’ll get what we get.

This direction seems to slip into a sort of technocratic corporatist fantasy, where corporations might argue they have greater expertise to run these complex systems than simple ordinary dumb citizens whose lives will be impacted from every direction by them.

It’s a conundrum that we will have to puzzle our way through one way or another without being able to see the bigger picture we’re assembling until it’s all finished.

Occupy AI: How far is too far?

Via the latest ImportAI newsletter, this excellent piece, Whoever Controls Language Models Controls Politics by Hannes Bajohr.

There’s a lot worth unpacking in this piece, but I’m just going to jump straight to the end when the author says:

If AI systems become the site of articulating social visions, a dominant factor in the make-up of the public sphere, or even a political infrastructure themselves, there is much to be said for actually subjecting them to public control as well. If this is taken to its logical conclusion, the last resort would be, horribile dictu, communization – in other words, expropriation.

It’s an idea that seems to be taking root, and is also reflected in this FT piece:

It felt deeply wrong that consequential decisions potentially affecting every life on Earth could be made by a small group of private companies without democratic oversight.

I think I more and more agree that this is the biggest problem of AI’s rapid ascendancy, that a few powerful players will own it all and amass altogether too much power for themselves.

OpenAI’s charter seems worth another reference here also, particularly this bit about unduly concentrating power:

We commit to use any influence we obtain over AGI’s deployment to ensure it is used for the benefit of all, and to avoid enabling uses of AI or AGI that harm humanity or unduly concentrate power.

I guess I’m starting to think, especially since GPT-4 and the mass adoption we’re seeing of OpenAI’s technologies, that they have already crossed this ill-defined threshold of unduly concentrating power. Is there a … duly (?) way concentrate power? Is that ever actually desirable that one company not just controls the technology itself, but now effectively gets to control all the other technologies that get built by third parties using their technologies?

Rather than pointlessly halt AI research for six months (so that Elon’s outfit can catch up – absolutely the only reason that fucker signed the moratorium), I can now strongly see the arguments for socializing it, and putting into the hands of the public literally *any* AI model that becomes powerful enough to be “really good.”

Citizens’ assembly to (non-violently) occupy OpenAI?

Citizens’s assembly to occupy Midjourney?

Are we there yet?

Too soon?

What I want to know is, what is the level of threat to human livelihood and democratic governance systems which would urge us to require action? And what would be appropriate action? My impression is that it will become more and more difficult to say “no” to systems like this, or the organizations which created them, the further entrenched their services get in the marketplace. This causes them to amass a lot of power and possible points of control, not to mention money. What happens when governments become wholly dependent on privately-owned AIs? There aren’t easy or simple answers to these questions, but I tried to explore them in fictional form here

Notes on Celestial Cephalopods

Celestial Cephalopods is book #90 in the AI Lore books series, by Canadian AI author & publisher, Lost Books.

I’m not sure how I landed in that part of the latent space anymore – because when you get into a flow state with Midjourney, it can be like falling into a dream, or some pocket universe where different rules work in unexpected ways – but somehow or other I landed on some images of ornately decorated quasi-religious seeming ‘Octopus Lords’ for lack of a better term. It was a side quest from some other exploration to be sure, but I bookmarked it and came back to it.

Once I connected the visual elements to a bit of lore – this idea that for some reason IRL some people claim cephalopods have potentially extraterrestrial features – the rest just flowed like water. Shades of Lovecraft in some of these I suppose, but I didn’t originally set out for that. It’s a convergence.

Here’s a copy of the art preview I uploaded to Gumroad for the book (click here for a bigger view). I really think of these foremost as art books:

Speaking of convergences, I’ve noticed in my image-making in Midjourney (and I’ve landed on “image-making” as my preferred term I think over the more academic sounding synthography) that some forms tend to converge on similar other forms. In this case, certain images of octopus tentacles combined with humans just ended up looking like snakes. In others, if you see representations of an octopus from a certain angle, you end up with a form that pretty strongly resembles an elephant’s face, trunk, and tusks. I saw it with some celebrity sets I was working with too, where certain views of certain figures generated by MJ seemed to bear resemblance to other well-known figures. I think this is just an artifact of there not being “that many things” ultimately in the universe, and shapes being reused consistently because they get the job done.

Anyway, I had fun with this one, because I figured out a way to kind of tell a somewhat sort of coherent story in a very lorecore way with these in ChatGPT v4. Kind of alternating between invented encyclopedia entries of pure exposition, and very short flash fiction segments of generally around 200 words set in that universe. So the workflow being something like:

  • Input some basic details about your ‘pocket universe’ of your narrative
  • Ask for a fictional encyclopedia on same
  • Then ask for 20 or so story ideas for flash fiction in that world
  • Give it a target word count, any directions, and tell it which items you want to flesh out into a flash fiction piece
  • I tend to tell it to not try to close or explain the story, because it’s sort of stuck on a ‘clean wrap-up’ which I really don’t want in this kind of open-ended story-telling, but ymmv.
  • Then alternate in new bits of encyclopedia entries that move the overall narrative in a given direction with new details
  • Then more flash fiction that progresses onwards in that world but doesn’t necessarily linearly complete anything that came before. It’s a way of mixing heavy lore via encyclopedia stuff, but giving a bit more space to digest it all by having dramatic incidents and scenarios… things that are evocative, vibey, and less spelled-out (though ChatGPT tends to do a good job of incorporating lots of contextual world-building into its flash fictions too.

After that, I had plenty of material to go back to MJ and flesh out specific aspects of the world I’d built, and once I found some winning formulas, just re-roll them a bunch of time to generate a bunch of image stock, with variations and “side quest” visual tangents.

I think this is one of the faster books I’ve produced at higher quality than some of the other fast ones I did with my own EncycGen app I wrote using ChatGPT. Probably a total of three hours for text generation (of high coherence, and very readable, I think), images made in Midjourney, image set reduction in Lightroom, editing & arrangement in Vellum, and uploading finished ebooks and collateral assets to Gumroad… maybe a total of 3 hours?

I know Midjourney doesn’t have an API yet (I don’t care about Stable Diffusion or Dall-E anymore – they’re dead to me), and GPT-4 isn’t public API yet either, but once I can get both of those hooked up to Github Copilot X (or brute forcing it through ChatGPT w/ v4), into my own custom book maker suited to my workflow – and which could export directly into Vellum for quick finishing touches all arranged properly… I don’t see any reason you couldn’t have a high quality lore-heavy book with interesting dramatic interludes & awesome images in about an hour, or possibly significantly less.

And if the quality matches the needs and desires of both author/publisher/producer and audience, it seems like a win to me all around?

Detoxifying AI as a dimension reduction

This is interesting:

LLMs model their output on the texts they have been trained on, which is more or less the writing of the entire Internet, including all the biases – the prejudices, racisms, and sexisms –that constitute much of it. Countering this means either censoring the output, as is done (to a degree) with ChatGPT, and thus rendering it potentially unusable. Or, as is also practiced, filtering the data set for its undesirable components – and thus feeding the model with a better world. This is an eminently political decision. Detoxifying AI necessarily involves formulating a social vision.

There’s a lot to tease out in this article, but this idea described above strikes me as a problem related to dimension reduction.

I’ve been having free ranging discussions with ChatGPT on some related problems around the design of my latent space navigator concept, and recently it offered this simple explanation of dimensionality reduction:

Dimensionality reduction is a technique used to reduce the number of variables or dimensions in a dataset while preserving the relationships and structures within the data.

So there’s something to having a large dataset with many dimensions, and having to reduce it to lower dimensionality for some specific intended use…

Notes on Shadows of Evil

Shadows of Evil is book #89 in the AI Lore books series.

It is an adaptation of the Sesame Street dystopian sci fi 70s film stills I made using Midjourney. It’s a subset of those images, as I didn’t want the book itself to be overly Sesame-ish. The backstory has been modified somewhat from the original Imgur post that holds the larger set. In the book, there is a depressed industrial city called Umbra, on the outskirts of which a strange explosion occurs in a chemical plant.

As a result of the explosion, somehow or other (ample handwavium), there is a children’s show being broadcast nearby at the same time, called The Wonderful World of Giggles. And as a result, characters from the universe of that show end up coming through a rift between dimensions into the city of Umbra. Since the monsters, the Giggles, are no longer constrained by the alternate dimension which held them, they end up causing havoc in Umbra, including a great deal of violence. Spurred on by that is the rise of a fascist group called the Regime which uses this turmoil to rise to power and enforce its own brutal regime, which it turns out is in league with some of the higher-up Giggles.

The text started out in Anthropic’s Claude, but I ran into a number of instruction-following problems with it, and switched over to ChatGPT running v4 to finish the rest. I liked Claude cause it seemed kind of fresh at first, but the more I’ve used it, the worse I think the instruction following is on this version. I believe there is a newer one coming out (or already out? v 1.3 I believe), and perhaps that is better, but I’m not sure how to activate it on my account…

Again, all the images are Midjourney. I have just straight up stopped using other image generation tools, because there’s no point in fiddling around with partial or lower quality when the results are as good and easy as they are in MJ. Midjourney has also opened up a lot of storytelling dimensions for me (#AIcinema), where most of the new books start now as image series before anything. Exploring those parts of the latent space gives me a strong narrative current, which I can then flesh out in AI tools for text.

Bryan Collins Interview With AI Author, Tim Boucher

Happy to share today an interview I did with Bryan Collins of the Become a Writer Podcast on the topic of using AI tools as a writer. Bryan and I had a good conversation that should be a useful introduction for creative people getting into this space.

If you are new here and haven’t already checked it out, you might also enjoy my conversation with Joanna Penn and also this one I did for This AI Life.

Also check out the about page for some other trails to follow, and of course my AI Lore books.

Latent Space Navigation Device

Following up on my post about trying to use AI to design a Midjourney controller, I asked ChatGPT for help doing a generalized blog post introducing the issues here. Here it is with light edits from me…


Introduction

In recent years, the advancements in artificial intelligence and machine learning have led to the development of sophisticated generative models capable of producing stunning and realistic images. One of the most notable types of these models is image diffusion models, which can generate a wide variety of images based on their underlying latent spaces. However, navigating these high-dimensional latent spaces and understanding their structure can be a challenging task.

Currently, our exploration of latent spaces is often haphazard and sporadic, with no maps or guides to help us understand their complex topography. What if we could have, for lack of a better comparison, a “Google Street View” for exploring the latent space of image diffusion models? This blog posts introduces the idea of and problem space around a hardware-software controller which would bring us closer to being able to more intuitively navigate high-dimensional spaces.

Navigating High-Dimensional Latent Spaces

Latent spaces are high-dimensional mathematical spaces that encode the essential features and variations of generated images. The challenge lies in creating an intuitive method to explore these spaces and discover interesting or meaningful images. The proposed solution consists of a handheld controller, combined with a software interface, that can translate physical actions into navigation through the latent space.

The physical controller could include components such as joysticks, dials, or sliders, which allow the user to manipulate specific dimensions of the latent space. The software interface would display the generated image based on the user’s current position in the latent space and update in real-time as the user navigates. Additionally, the interface could provide various exploration modes, such as local and global exploration, to facilitate different types of exploration experiences.

Dimensionality Reduction and User Experience

One of the core challenges in navigating high-dimensional latent spaces is the need to reduce their dimensionality to a more manageable form, without losing meaningful features. Techniques such as PCA or t-SNE can be used to retain important characteristics while providing an intuitive navigation experience.

As users navigate the latent space using the controller and software, they would be able to view their path of travel, save points of interest, and explore adjacent neighborhoods. The software could also allow users to switch between different dimensions on the fly, providing a more dynamic and flexible exploration experience.

Possible Exploration Modes

In addition to local exploration, which focuses on the immediate neighborhood around a specific point in the latent space, other modes could be integrated into the software. For example, a prompt-based mode would enable users to input text prompts and generate images based on those themes. Another possibility is a referent-based mode, where users can define a set of referents, points, or features within the latent space (such as a blue ball, an elephant, or a storm). This mode would allow users to explore themes around these referents with different configurations or treatments, effectively enabling them to discover new and unique combinations of visual elements.

Conclusion

The prospect of an innovative hardware-software solution for navigating high-dimensional latent spaces opens up a world of creative possibilities, allowing users to delve into the intricate structures of generative models.


I kinda clipped it at the end, cause it always does corny conclusions, etc. It’s a little janky overall, but a good enough anchor on the topic to at least drop into the water for now.

Page 60 of 178

Powered by WordPress & Theme by Anders Norén